1、关键字都是小写,保留字现在java版本不用,以后可能用,先占住
2、标识符(可自己取名,编译严格遵守,否则报错)
由26个英文字母大小写,0-9,——或﹩组成
数字不可以开头
不可用关键字和保留字,但能包含关键字和保留字
严格区分大小写,长度无限制
标识符不能包含空格
3、命名规范(不遵守,也可以通过,建议遵守)
包名:多单词组成时所有字母都小写:xxxyyyzzz;
类名、接口名:多单词组成时,所有单词首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
java采用unicode字符集,因此标识符也可使用汉字声明,但不建议使用
保留字goto、const
4、变量(变量类型、变量名、存储的值)
java中每个变量必须先声明,后使用。定义赋值,输出时才不会编译报错
使用变量名来访问这块区域的数据,System.out.println(myAge);
变量的作用域:定义在一对{}中
变量只有在其作用域中才有效
同一个作用域内,不能定义重名的变量
定义变量:数据类型 变量名 = 变量值,int myAge = 15;
基本数据类型:整型(byte 1字节8位、short 2字节16位、int 4字节32位、long 8字节64位)、浮点型(float 4字节32位、double 8字节64位)、字符型(char 1字符=2字节)、布尔型(boolean)
引用数据类型:类(class)、接口(interface)、数组(array)
字符串在类里
1字节=8byte,byte范围:-128~127,long字型赋值以L或l结尾
float尾数精确到7位有效数字,float表示数值的范围比long大。变量值要以F或f结尾
通常定义浮点型用double,范围大精度高
char,定义变量用’’,内部只能有一个字符,char c1 = ‘a’;转义字符‘\n’换行符,’\n’输出\n,’\t’制表符。unicode字符编码集,如‘\u0043’代表C
出现乱码,保存为ANSI。System.out.print(“Hello World!你好,中国”);运行时就会出现乱码
布尔型只能取true、false之一,条件判断、循环结构经常使用
5、基本数据类型之间的运算规则:七种类型,不包含布尔型
自动类型提升:当容量小的数据类型的变量与大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
容量大小指的是熟的范围的大和小,不是字节。byte–>short–>int–>long–>float–>double
当byte、char、short三种类型的变量做运算时,结果为int型.三者之间或者同种类型做运算,都是int型。
byte、char、short–>int–>long–>float–>double
强制类型转换:自动类型提升运算的逆运算
需要使用强转符:()
强制类型转换,可能导致精度损失
整型常量,默认为int型;浮点型常量,默认为double型
long型不加l或L,认定为int,自动提升成long型。若数值过大,超出数值范围,编译失败,可加L就不会失败
float不加f报错,不加F认为时double型,double转float
6、String类型变量使用
属于引用数据类型,翻译为字符串
声明String类型变量时,使用一对"",双引号里可为空。但是char类型,’'里必须有一个字符,放一个空格也行
String可以和八中类型变量做运算,且运算只能是连接运算:+用加号表示,运算结果是String类型
+前后有一个String,即为连接
7、进制
二进制:0,1,以0b或0B开头。
八进制:0-7,以0开头
十进制:0-9
十六进制:0-9及A-F,满16进1,以0X或0x开头,A-F不区分大小写。
二进制最高位是符号位,0正数,1负数。二进制正数三码合一;负数,最高位0<>1,得到某个数的原码,原码所有位0<>1,得到该数的反码,反码+1得到补码
计算机底层以补码方式存储数据。原码–>反码–>补码
二—十,2的幂;二—八,三个一位;二—十六,四个一位
8、练习
(1)String类型连接运算
//+前后有一个String类型是连接运算,否则是加法
char c='a';//a:97 A:65
int num = 10;
String str="hello";
System.out.println(c + num + str);//107hello 前面加法,后面连接
System.out.println(c + str + num);//ahello10 前面连接,后面连接
System.out.println(c + (num + str));//a10hello 后面连接之后是String,所以前面也是连接
System.out.println((c + num) + str);//107hello 前面加法,后面连接
System.out.println(str + num + c);//hello10a 前面连接后是String,后面是连接
//* *
System.out.println('*'+'\t'+'*');//93 都是字符,前后加法
System.out.println('*'+"\t"+'*');//* * 双引号是String,前后连接
System.out.println('*'+'\t'+"*");//51* 前面加法,后面连接
System.out.println('*'+('\t'+"*"));//* * 后面括号字符和String,后面连接,前面连接
(2)类型转换
byte、char、short–>int–>long–>float–>double
//byte-->short-->int-->long-->float-->double
int i1=2;
byte b1=1;
int i2=i1+b1;
System.out.println(i2);
short s1=5;
int i3=i1+s1;
System.out.println(i3);
long l1=56l;
long l2=l1+i1;
System.out.println(l2);
//当byte、char、short三种类型的变量做运算时,结果为int型
byte b2=8;
int i4=b1+b2;
System.out.println(i4);
int i5=s1+b1;
System.out.println(i5);
char c1='a';
int i6=c1+i1;
System.out.println(i6);
(3)自动类型转换精度
//精度损失1
double d1=75.2;
int i1=(int)d1;//截断操作
System.out.println(i1);//输出75,精度损失
//精度损失2
int i2=153;
byte b1=(byte)i2;
System.out.println(b1);//输出-103,153-256=-103
//没有精度损失
long l1=123l;
short s1=(short)l1;
System.out.println(s1);//输出123
//两种情况1
long l2=123456;//long型后面没有加L
System.out.println(l2);//输出123456,默认为int转换long,自动类型提升
long l3=123456882215355L;//应当后面加L
System.out.println(l3);//报错,整数太大
//两种情况2
byte b2 = 13;
//byte b3=b2+1;
//1是int型,int和byte运算,应为int型
int i3=b2+1;
System.out.println(i3);