JAVA复习基础篇

JDK
JVM       核心类库       开发工具
 JDK:java的开发工具
 JRE:java的运行环境
基础语法
注释:对代码的解释说明
使用方法://注释信息
        /*注释信息*/
        /**
        注释信息
        **/
关键字:被java赋予了特定涵义的英语单词
class:用于(创建/定义)一个类(java最基本的组成单元)
字面量
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

byte:
    byte 数据类型是8位、有符号的,以二进制补码表示的整数;
    最小值是 -128(-2^7);
    最大值是 127(2^7-1);
    默认值是 0;
    byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占                 用的空间只有 int 类型的四分之一;
例子:byte a = 100,byte b = -50。
    
short:
     short 数据类型是 16 位、有符号的以二进制补码表示的整数
     最小值是 -32768(-2^15);
     最大值是 32767(2^15 - 1);
     Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
     默认值是 0;
例子:short s = 1000,short r = -20000。
        
int:
	int 数据类型是32位、有符号的以二进制补码表示的整数;
	最小值是 -2,147,483,648(-2^31);
	最大值是 2,147,483,647(2^31 - 1);
	一般地整型变量默认为 int 类型;
	默认值是 0 ;
例子:int a = 100000, int b = -200000。
	
long:
	long 数据类型是 64 位、有符号的以二进制补码表示的整数;
	最小值是 -9,223,372,036,854,775,808(-2^63);
	最大值是 9,223,372,036,854,775,807(2^63 -1);
	这种类型主要使用在需要比较大整数的系统上;
	默认值是 0L;
例子: long a = 100000L,long b = -200000L。
	"L"理论上不分大小写,但是若写成"l"容易与数字"1"混淆,不容易分辩。所以最好大写。
	
float:
	float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;
	float 在储存大型浮点数组的时候可节省内存空间;
	默认值是 0.0f;
	浮点数不能用来表示精确的值,如货币;
例子:float f1 = 234.5f。
	
double:
	double 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数;
	浮点数的默认类型为 double 类型;
	double类型同样不能表示精确的值,如货币;
	默认值是 0.0d;
例子:
	double   d1  = 7D ;
	double   d2  = 7.; 
	double   d3  =  8.0; 
	double   d4  =  8.D; 
	double   d5  =  12.9867; 
    7 是一个 int 字面量,而 7D,7. 和 8.0 是 double 字面量。

boolean:
	boolean数据类型表示一位的信息;
	只有两个取值:true 和 false;
	这种类型只作为一种标志来记录 true/false 情况;
	默认值是 false;
例子:boolean one = true。

char:
	char 类型是一个单一的 16 位 Unicode 字符;
	最小值是 \u0000(十进制等效值为 0);
	最大值是 \uffff(即为 65535);
	char 数据类型可以储存任何字符;
例子:char letter = 'A';。
变量
类变量:独立于方法之外的变量,用 static 修饰。

实例变量:独立于方法之外的变量,不过没有 static 修饰。

局部变量:类的方法中的变量。
public class Variable{
  
    static int allClicks=0;    // 类变量
 
    String str="hello world";  // 实例变量

    public void method(){
 
        int i =0;  // 局部变量
 
    }
}
修饰符
访问修饰符:
	    default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
	
		private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
		
		public : 对所有类可见。使用对象:类、接口、变量、方法
		
		protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

非访问修饰符:
	    static 修饰符,用来修饰类方法和类变量。
	
		final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
		
		abstract 修饰符,用来创建抽象类和抽象方法。
		
		synchronized 和 volatile 修饰符,主要用于线程的编程。
运算符
算术运算符:
	+(加法) ---- 相加运算符两侧的值
	-(减法) ---- 左操作数减去右操作数
	*(乘法) ---- 相乘操作符两侧的值
	/(除法) ---- 左操作数除以右操作数
	%(取余) ---- 左操作数除以右操作数的余数
	++(自增)---- 操作数的值增加1
	--(自减)---- 操作数的值减小1
	
关系运算符:
	==(判断)---- 检查如果两个操作数的值是否相等,如果相等则条件为真。
	!=(判断)---- 检查如果两个操作数的值是否相等,如果值不相等则条件为真。
	>(大于) ---- 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。
	<(小于) ---- 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。
	>=(不小于)--- 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。
	<=(不大于)--- 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。
	
位运算符:
    Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:
				A = 0011 1100
				B = 0000 1101
				-----------------
				A&B = 0000 1100
				A | B = 0011 1101
				A ^ B = 0011 0001
				~A= 1100 0011
				
逻辑运算符:
	&&(与) ---- 当且仅当两个操作数都为真,条件才为真。
	||(或) ---- 如果任何两个操作数任何一个为真,条件为真。
	!(反转)---- 如果条件为true,则逻辑非运算符将得到false。
	
赋值运算符:
          + =(加和赋值操作符)----C + = A等价于C = C + A
          - =(减和赋值操作符)----C - = A等价于C = C - A
          * =(乘和赋值操作符)----C * = A等价于C = C * A
          。。。。。。。
          
条件运算符:if语句
循环结构
while 循环:
		while( 布尔表达式 ) {
	    //循环内容
	    }
do…while 循环:
		do {
	    //代码语句
	    }while(布尔表达式);
for 循环:
		for(初始化; 布尔表达式; 更新) {
	    //代码语句
	    }
条件语句
if...else语句:
		if(布尔表达式){
		   //如果布尔表达式的值为true
		}else{
		   //如果布尔表达式的值为false
		}
if...else if...else 语句:
		if(布尔表达式 1){
	    //如果布尔表达式 1的值为true执行代码
		}else if(布尔表达式 2){
		   //如果布尔表达式 2的值为true执行代码
		}else if(布尔表达式 3){
		   //如果布尔表达式 3的值为true执行代码
		}else {
		   //如果以上布尔表达式都不为true执行代码
		}
嵌套的 if…else 语句:
		if(布尔表达式 1){
	   如果布尔表达式 1的值为true执行代码
		   if(布尔表达式 2){
		      如果布尔表达式 2的值为true执行代码
		    }
	     }
switch case 语句
switch(expression){
	case value :
  	 //语句
    break; //可选
	case value :
   	//语句
   	break; //可选
	//可以有任意数量的case语句
default : //可选
   //语句
}
StringBuffer
append(String s):
	将指定的字符串追加到此字符序列。
	
reverse():
	将此字符序列用其反转形式取代。
	
delete(int start, int end):
	移除此序列的子字符串中的字符。
	
insert(int offset, int i):
	将 int 参数的字符串表示形式插入此序列中。
	
insert(int offset, String str):
	将 str 参数的字符串插入此序列中。
	
replace(int start, int end, String str):
	使用给定 String 中的字符替换此序列的子字符串中的字符。
数组
声明数组变量
	dataType[] arrayRefVar;   // 首选的方法
	或
	dataType arrayRefVar[];  // 效果相同,但不是首选方法
	
创建数组:
	arrayRefVar = new dataType[arraySize];
	
多维数组:
	type[][] typeName = new type[typeLength1][typeLength2];
	
Arrays 类:
	给数组赋值:通过 fill 方法。
	对数组排序:通过 sort 方法,按升序。
	比较数组:通过 equals 方法比较数组中元素值是否相等。
	查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
流(Stream)
读取控制台输入:
  	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  
从控制台读取多字符输入:
	int read( ) throws IOException
//使用 BufferedReader 在控制台读取字符
 
import java.io.*;
 
public class BRRead {
    public static void main(String[] args) throws IOException {
        char c;
        // 使用 System.in 创建 BufferedReader
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("输入字符, 按下 'q' 键退出。");
        // 读取字符
        do {
            c = (char) br.read();
            System.out.println(c);
        } while (c != 'q');
    }
}
从控制台读取字符串:
	String readLine( ) throws IOException
//使用 BufferedReader 在控制台读取字符
import java.io.*;
 
public class BRReadLines {
    public static void main(String[] args) throws IOException {
        // 使用 System.in 创建 BufferedReader
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str;
        System.out.println("Enter lines of text.");
        System.out.println("Enter 'end' to quit.");
        do {
            str = br.readLine();
            System.out.println(str);
        } while (!str.equals("end"));
    }
}
读写文件(file)
FileInputStream:该流用于从文件读取数据,它的对象可以用关键字 new 来创建。
     InputStream f = new FileInputStream("C:/java/hello");
     
FileOutputStream:该类用来创建一个文件并向文件中写数据。
	OutputStream f = new FileOutputStream("C:/java/hello")
文件和I/O
File Class(类)
FileReader Class(类)
FileWriter Class(类)
Scanner 类
next() 与 nextLine() 区别:

	next():
		1、一定要读取到有效字符后才可以结束输入。
		2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
		3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
		next() 不能得到带有空格的字符串。
		
	nextLine():
		1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
		2、可以获得空白。
		
	如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持,但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取