Java基础知识:易错点、重难点(一)

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[][]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值