1. 一个源文件中最多只能有一个public 类,其它类的个数不限。
2. 如果源文件包含一个public类,则文件名必须按该类名命名。
3. java程序中+号左右两边都是数值型的时候做加法运算,如有一方位字符串,则做拼接,如:
System.out.println(500+20+"hello"); //520hello
System.out.println("hello" +500+20); //hello50020
4. java两种数据类型:
- 1) 基本数据类型8个: byte[1],short[2],int[4],long[8],float[4],double[8],char[2],boolean[1]。
- 2) 引用数据类型: 类、接口、数组。
5. Java 的整型常量(具体值)默认为int 型,声明long 型常量须后加‘l’或‘L’;Java 的浮点型常量(具体值)默认为double 型,声明float 型常量,须后加‘f’或‘F'。
6. 在java中, char的本质是一个整数,即unicode码对应的字符。可以直接给char赋一个整数,然后输出时,会按照对应的unicode字符输出,例如97对应字符a。因此,char类型也是可以进行运算的。
char c1 = 97;
System.out.println(c1); // a
char c2 = 'a';
System.out.println((int)c2);//输出'a' 对应的数字97
System.out.println('a' + 10);//107
7.常见字符编码表:ASCII(1个字节),Unicode(字母和汉字均为2字节),utf-8(字母1字节,汉字3字节),gbk(字母1字节,汉字2字节)。
8.自动类型转换:当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型。精度由小到大:char->int->long->float->double以及byte->short->int->long->float->double。
9. byte/ short和char之间不会相互自动转换,但他们三者之间可以进行计算,计算时先转成int。
10. boolean类型不参与转换。
以上几点可参考下面代码:
//1. 多种类型数据混合运算,系统先将所有数据转成容量最大的数据类型
int n1 = 10;
float d1 = n1 + 1.1;//错误,结果类型是double
double d1 = n1 + 1.1;//正确
float d1 = n1 + 1.1F;//正确,结果类型是float
//2. 把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时会报错,反之自动转换类型
int n2 = 1.1;//错误double -> int
//3. (byte, short) 和char 之间不会相互自动转换
//4. 当把具体数赋给byte 时,先判断该数是否在byte范围内,如果是就可以
byte b1 = 10; //对, 10符合byte范围-128到127
int n2 = 1;
byte b2 = n2; //错误, 如果是变量赋值,判断类型
char c1 = b1; //错误, byte 不能自动转成char
//4. byte,short,char 三者可以计算,在计算时首先转换为int 类型
byte b2 = 1;
byte b3 = 2;
short s1 = 1;
short s2 = b2 + s1; //错, b2 + s1 => int
int s2 = b2 + s1; //对, b2 + s1 => int
byte b4 = b2 + b3; //错,b2 + b3 => int
//5. boolean不参与转换
boolean pass = true;
int num100 = pass;// 错,boolean 不参与类型的自动转换
//6. 自动提升原则: 表达式结果的类型自动提升为操作数中最大的类型
byte b4 = 1;
short s3 = 100;
int num200 = 1;
float num300 = 1.1F;
double num500 = b4 + s3 + num200 + num300; //float -> double
11. 强制类型转换:自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型,但可能会丢失精度。强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级。
int x =(int)10*3.5+6*1.5;
int y =(int)(10*3.5+6*1.5);
12. char类型可以保存int的常量值,但不能保存int的变量值,需要强转
char c1 = 100; //正确
int m = 100: //正确
char c2 = m; //错误
char c3 = (char)m; //正确
13. 对于&&短路与而言,如果第一个条件为false ,后面的条件不再判断。对于&逻辑与而言,如果第一个条件为false ,后面的条件仍然会判断。短路或||和逻辑或|同理。
14. java标识符命名规则:由26个英文字母大小写、0-9,、下划线 _ 或$组成,且开头不能是数字,不可以使用关键字和保留字。
15.switch(表达式)中表达式的返回值类型必须是:(byte,short,int,char,enum[枚举],String),不可以是double、float等类型。
16. case子句中的值必须是常量,不能是变量。
17. switch结构中,break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾,除非遇到break。
18. 表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的
类型,比如输入的是字符,而常量是int。
19. 一维数组的声明方式可以是1)数据类型数组名[]; 也可以2)数据类型[] 数组名;例如,int a[]; 或者int[] a;。
20. 数组创建后,如果没有赋值,有默认值:int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char \u0000,boolean false,String null。
21. 二维数组的声明方式有:int[][] y 或者 int[] y[] 或者 int y[][]