java se
1.关于注释
单行注释可以嵌套,多行注释不能嵌套
2.关键字
字母全部小写(goto和const作为保留字,目前不使用)
3.标识符
不能数字开头||不能用关键字||区分大小写||不能有空格||符号只有$和_
4.命名
包名全部小写(公司域名倒着写)
类或者接口(单个单词首字母大写,多个单词每个单词首字母大写HelloWorld)驼峰命名
方法和变量(一个单词小写,多个单词第二个开始首字母大写)
常量(一个单词所有字母大写,多个单词全部大写,中间使用_)
5.常量
字符常量 单引号括起来的内容 只能放单个数字(0-9),字母,符号
字符串常量 双引号括起来的内容
整数常量
小数常量
布尔常量
空常量
6.进制
权重1 2 4 8 16 32 64 128 快速转换为二进制
二进制转八进制3个一组 111 100(60为例子)
二进制转十六进制4个一组 0011 1100(60位为例)
7.原码反码补码
最高位符号位 0正1负(共8位,一个符号位,七个数位)
正数原码反码补码都一样
对负数而言:
反码:符号位不变,原码逐位取反
补码:反码末尾加一
计算机的运算是补码形式的。符号位加起来超过8位,超过8位部分的舍去。
原码补码之间的转换多借用反码作为媒介。
8.变量
数据类型
整数类型
byte 1 -2^7~2^7-1
short 2 -2^15~2^15-1
int 4 -2^23~2^23-1
long 8 -2^31~2^31-1(默认int,转化为long加L,小l和1难区分)
浮点类型
float 4 单精度
double 8 双精度(默认double)
字符类型
char 2
布尔类型 理论上是八分之一
9.数据类型转换
隐式转换
int类型和byte类型相加,byte转换为int。byte长度1,int长度4,相加byte自动加3。
强制转换
(byte)可能丢失
byte b1 =2;
byte b2 =4;
byte b3 =b1+b2;
byte b4 =2+4;
System.out.println(b3);
这样会报错:
Type mismatch: cannot convert from int to byte
报错:类型不匹配,byte类型运算会自动变为int,不能用byte类型接收。
其他原因分析:变量存储的值是变化的,两个相加,可能会超出类型取值的范围。
转化规则:byte,short,char->int->long->float->double
10.long和float的取值范围谁大问题
float比long大。
4个字节比8个字节大的原因?
①底层存储结构不同
②float4个字节,32个二进制位,其中1个符号位,8个指数位,23个尾数位。指数在-126到127之间,明显比31大,也就是比-2^31~2^31-1大。
11.字符和字符串参与运算
字符会根据ASC表自动转化为int,如a是97
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
输出结果:
helloa1
98hello
原因:任何数据类型用+和字符串连接都会成为字符串。
System.out.println("5+5="+5+5);
System.out.println("5+5="+(5+5));
括号提高优先级,所以输出结果为:
5+5=55
5+5=10
12.char类型
char c1 = 97;
System.out.println(c1);
根据ASC表 输出的是a char取值范围0到65535
char是否可以存储中文?
可以,java中使用的是unicode编码,Unicode中每个字符占用2个字节,而中文也是两个字节。
13.算术运算符
/:整数相除只能得到整数
%:取模(符号只和左边有关系,和右边无关)
13%-5 3
-13%5 -3
任何正整数%2只能是0或者1,用来做切换条件。
14.a++和++a
b=a++; //a先把值赋给b,再自增
c=--a; //a先自减,再赋值给c
练习题:
int x =4;
int y =(x++)+(++x)+(x*10);
System.out.println("x="+x+",y="+y);
4
当前位置的值 x的值
x++ 4 5
++x 6 6
x*10 60
4+6+60=70
byte类型的变量,b++可以直接输出,b+1则会报错。所以++有强转功能。
15.赋值运算符
+= -= *= %=
和++一样+=,也有隐式转换功能。
16.关系运算符
>= <= == !=等