编译:
javac demo.java
运行:
java demo
编译,将class文件放到相应文件夹中:
javac -d .\classfile demo.java
一个java源文件中可以定义多个类,但最多只能有一个类用public来修饰,而且该public修饰的类名要与java源文件名一样。
定义标识符的规则:
(1) 以 "_" , "$" , 字母开头;
(2) 只含有 "_" , "$" , 字母 , 数字;
(3) 没有长度限制,不能有空格;
(4) 不能使用java的关键字或保留字
(5) 大小写敏感
例如: _abc √ $ABC √ 2A × 不能以数字开头 A# × For √ 大小写敏感 for × 关键字
数据类型:
boolean true/false byte 8位整型 1个字节 short 16位整型 2个字节 int 32位整型 4个字节 long 64位整型 8个字节 char 16位 unicode 字符 2个字节 double 64位浮点数字型 8个字节 float 32位浮点数字型 4个字节
移位运算符:
>> (右移,右移一位等于除2) << (左移,左移一位等于乘2) >>> (无符号右移)
运算符的优先级:
常量的声明:
final 类型 常量名; final 类型 常量名=常量值;
静态static:
(1) 在static方法中只能访问static类变量,只能调用static的函数
(2) 在非static方法中可以使用static变量,非static变量
函数的重载:
(1) 发生在同一个类中
(2) 方法名相同
(3) 参数列表不同(类型,数量,顺序)
(4) 仅仅返回值类型不同,不属于函数的重载。
程序流程控制语句:
break; 语句:跳出其所在的循环
break out; 跳出out指示的那一层循环
continue; 跳出当次循环的剩余部分,直接进入下一次循环
continue out; 跳出out指示的那一层循环的当次循环,进入那一层循环的下次循环
break,continue加标号的怎么用?什么时候用?即各个控制结构语句是可以嵌套的
写TestBreak.java演示break out的使用
public static void main(String[] args){ out:for(int i=1;i<=9;i++){ for(int j=0;j<i;j++){ for(int k=0;k<j;k++){ for(int m=0;m<k;m++){ if(i+k+j+m==24){ System.out.println(i*1000+j*100+k*10+m); break out; } } } } }
一维数组:
(1) 声明数组:
int[] a; 声明一个数组变量,可以不给数组长度,此时还不会给数组分配空间。
当a=new int[10]; 才会分配空间。
(2) 初始化:
int[] a={3,7,54,24,98,1,0,5};√ 在定义数组a时就分配空间并初始化
int[] b=new int[]{4,6,8,32};√ 第二个[]中间必须为空,后面才能用{}来初始化;
这里产生了2个对象(数组对象,数组名引用)
int[] b1=new int[4]{8,4,3,1};× 第二个[]中间有值则后面不能使用{}来初始化
(3) 数组拷贝:
System.arraycopy(m,0,n,0,m.length);
二维数组:
(1) 定义数组:
int[][] a=new int[3][4]; √ int[][] a; a=new int[3][4]; √会分配空间 int[][] c1=new int[][3]; × int[3][] d=new int[3][]{{4,5},{7,8},{9,2}}; × int[3][] d=new int[][]{{4,5},{7,8},{9,2}}; × int[][] b={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; √显示初始化数组 int[][] c=new int[][]{{4,5},{7,8}}; √ int[][] d=new int[3][];printArray(d); //空指针异常
(2) 分开定义:
Java的二维数组本质上是一维数组的一维数组
b是一个二维数组,如果看成一维数组的一维数组,则b用三个元素,b.length为3;
b的三个元素分别为b[0],b[1],b[2],这三个又分别是一维数
int[][] a = new int[3][]; a[0] = new int[2]; a[1] = new int[3]; a[2] = new int[4];
输入流Scanner:
import java.util.Scanner; Scanner cin = new Scanner(System.in); cin.next(); cin.nextInt(); cin.nextLine(); cin.nextDouble();