一.关键字 1、被Java语言赋予了特殊含义,用于专门用途的字符串(也就是单词)例如class等等。 2、关键字中所有字母都为小写 二、标识符 凡是可以自己命名的地方,都叫标识符。例如:类名、方法名、变量名、接口名…… 三、标识符命名的规则:(要求严格遵守,否则会报编译性的错误) 1、由26个英文字母大小写,0-9,_或$组成 2、 数字不可以开头。 3、不可以使用关键字和保留字,但能包含关键字和保留字(现有Java版本未使用,但以后版本会作为关键字使用) 4、Java中严格区分大小写,长度无限制。 5、标识符不能包含空格。 四、Java中的名称命名规范:(如果不遵守,也不会报错) 1、包名:多单词组成时所有字母小写:xxxyyyzzz 2、类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz 3、变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz 4、常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ 5、在起名时,要尽量有意义。 五、变量 1、Java中变量定义的格式:数据类型 变量名 = 初始化值 2、变量先定义后使用 3、变量的分类: 基本数据类型: 数值型: 整数类型:byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用数据类型: 类:class(字符串) 接口:interface 数组:[] 4、基本数据类型总结
/*基本数据类型*/ class Love { public static void main(String[] args) { //1.整型:byte(-128~+127) short int(默认类型) long byte b1=13; short s1=520; int i1=14; System.out.println(b1); System.out.println(s1); System.out.println(i1); //定义long型变量,值的末尾加“L”或“l” long I1=5201314L; System.out.println(I1); //2.浮点型(带小数点的数值):float double(默认类型) double d1=13.14; System.out.println(d1); //声明flaot类型的浮点型数据,末尾要加“F”或“f” float f1=13.14F; System.out.println(f1); //3.字符型:char 只能表示一个字符(英文,中文,标点符号) char c1='a'; System.out.println(c1); //使用String来输出多个字符 String str="ab"; System.out.println(str); //可以表示转义字符 char c2='\n'; System.out.println("abc"+c2+"def"); //了解一下 char c3='\u1234'; System.out.println(c3); //4.布尔类型:boolean 只能够取值为true或false。不能取值null。 boolean t1=true; if(t1){ System.out.println("我爱\"Java\""); }else{ System.out.println("你在说谎"); } } }六、类型转换(不考虑boolean)
class Teep { public static void main(String[] args) { //1.自动类型转换:当容量小的数据类型与容量大的数据类型做运算时,容量小的会自动转换为容量大的数据类型: // char,byte,short==>int==>long==>float==>double int i1=12; short s1=2; int i2=i1+s1; float f1=12.3F; float f2=f1+i2; long I=12L; float f3=I; System.out.println(i2); System.out.println(f2); //char c1='a';//97 char c1='A';//65 int i3=c1+1; System.out.println(i3); //需要注意的:当char\byte\short之间做运算时,默认的结果为int类型 short ss1=12; byte bb1=1; char cc1='a'; int ii1=ss1+bb1; int ii2=cc1+bb1; System.out.println(ii1); System.out.println(ii2); //2.强制类型转换:容量大转换为容量小的,要使用强制类型转换符:() //强制类型转换的问题:导致精度的损失 long I1=12345L; int m1=(int)I1; System.out.println(m1); byte by1=(byte)m1; System.out.println(by1); //平时常用的字符串,也是一种数据类型:String String nation="我喜欢Java"; System.out.println(nation); //字符串与基本数据类型之间的运算:只能是连接运算:+。得到的结果仍为一个字符串 String str="abc"; String str1=str+m1;//abc12345 System.out.println(str1); //在字符串前面的其他数据类型做加法运算,在字符串后面的其他数据类型做连接运算 String st1="hello"; int myInt1=12; char ch1='a';//97 System.out.println(st1+myInt1+ch1);//hello12a System.out.println(myInt1+ch1+st1);//109hello(int类型) System.out.println(ch1+st1+myInt1);//ahello12 //"数据"等同于数据+"" String st2="12"; String str2=12+""; System.out.println(st2); System.out.println(str2); } }七、进制 二进制:由0,1组成,满2进1,以0b或0B开头。 十进制:由0-9组成,满10进1,。 八进制:由0-7组成,满8进1.以数字0开头表示。 十六进制:0-9及A-F,满16进1.以0x或0X开头表示。A-F不区分大小写。 原码、反码、补码 正数、负数都以补码的二进制形式储存 1、对于正数:原码、反码、补码三码合一 2、对于负数: 原码:负数符号位为1 反码:原码各个位除符号位外取反 补码:反码+1 八、运算符 1、算数运算符:+ - + - * / % ++ – +
class Test1 { public static void main(String[] args) { //除:/ int i=12; int j=i/5; double d=i/5; double d1=i/5.0; double d2=(double)i/5; System.out.println(j);//2 System.out.println(d);//2.0 System.out.println(d1);//2.4 System.out.println(d2);//2.4 //取模:% :取余数.结果的符号取决于被模数(被除数) int i1=12%5; int i2=-12%5; int i3=12%(-5); int i4=-12%(-5); System.out.println(i1);//2 System.out.println(i2);//-2 System.out.println(i3);//2 System.out.println(i4);//-2 //前++:先自加1,后做运算 //后++:先做运算,后自加1 int myInt1=10; int myInt2=++myInt1;//前++ System.out.println(myInt1);//11 System.out.println(myInt2);//11 int myInt3=10; int myInt4=myInt3++;//后++ System.out.println(myInt3); //11 System.out.println(myInt4);//10 //前--:先自减1,后做运算 //后--:先做运算,后自减1 int myInt5=10; int myInt6=--myInt5;//前-- System.out.println(myInt5);//9 System.out.println(myInt6);//9 int myInt7=10; int myInt8=myInt7--;//后-- System.out.println(myInt7); //9 System.out.println(myInt8);//10 } }2、赋值运算符:+= -= *= %= /=
class Test2 { public static void main(String[] args) { int i1=10; i1 +=3;//i1=i1+3; System.out.println(i1);//13 short s=10; //s=s+1;//编译不通过 s=(short)(s+1);//不建议这么做 s +=1;//既可以实现运算,又不会更改s的数据类型 System.out.println(s);//11 int i2=12; i2 %=5;//i2=i2%5; System.out.println(i2);//2 boolean b1=false; //区分==和=的区别。==的含义为==的两端是否相等,而=的含义为=的右端赋值给=的左端 if(b1=true)//=的结果为爱,==的结果为恨 System.out.println("爱"); else System.out.println("恨"); int i=1; i *=0.1; System.out.println(i);//0 } }3、逻辑运算符:&逻辑与 |逻辑或 !逻辑非 && 短路与 ||短路或 ^逻辑异或
class Test3 { public static void main(String[] args) { boolean a=true; boolean b=false; System.out.println(a & b);//false System.out.println(a && b);//false System.out.println(a | b);//true System.out.println(a || b);//true System.out.println(a & !b);//true System.out.println(a^b);//true //& 与 &&的区别:&:不管&的左端是true还是false,&的右端都会进行计算 // &&:当&&左端为false时,&&的右端不再进行计算 //以后使用时,建议使用&& int i1=10; if(b & (i1++) > 0){ System.out.println("今天天气很好"); } else{ System.out.println("没有下雨");//结果 } System.out.println(i1);//11 int i2=10; if(b && (i2++) > 0){ System.out.println("今天天气很好"); } else{ System.out.println("没有下雨");//结果 } System.out.println(i2);//10 //|与||的区别:|:当|的左端为true还是false时,|的右端都会运算 // ||:当||的左端为true时,||的右端不再进行运算 //以后使用时,建议使用|| int i3=10; if(a | (i3++) > 0){ System.out.println("今天天气很好");//结果 } else{ System.out.println("没有下雨"); } System.out.println(i3);//11 int i4=10; if(a || (i4++) > 0){ System.out.println("今天天气很好");//结果 } else{ System.out.println("没有下雨"); } System.out.println(i4);//10 } }4、位运算符:<< >> >>> | & ~ ^
class TestBit { public static void main(String[] args) { //左移<<:移动之后右端的空位拿最高位补(正数拿0补,负数拿1补) int i1=31; System.out.println(i1<<3);//248=31*2*2*2 System.out.println(i1<<28);//-268435456 //右移>>:移动之后左端的空位拿最高位补(正数拿0补,负数拿1补) System.out.println(i1>>2);//7 System.out.println(i1>>>2);//7 //无符号位的右移>>>:移动之后左端的空位拿最高位补(不管正数、负数都拿0补) int i2=-31; System.out.println(i2>>2);//-8 System.out.println(i2>>>2);//1073741816 System.out.println(12 & 5);//4 System.out.println(12 | 5);//13 System.out.println(12 ^ 5);//9 System.out.println(~12);//-13 } } class TestExer1 { public static void main(String[] args) { int m=12; int n=5; System.out.println("m: "+m+" n: "+n); //方法一:提供一个临时变量 int temp=m; m=n; n=temp; System.out.println("m: "+m+" n: "+n); //方法二:当m和n较大时,有可能出现精度损失 m=m+n;//m=12+5; n=m-n;//n=17-5; m=m-n;//m=17-12; System.out.println("m: "+m+" n: "+n); //方法三:优点:没有上面两种方法的缺点。缺点:难! m=m^n; n=m^n;//(m^n)^n==m; m=m^n;//(m^n)^m==n; System.out.println("m: "+m+" n: "+n); //60 手动的方式,从控制台输出60的十六进制 int i=60; //自动调用Integer类现成的方法 //操作 String hex = Integer.toHexString(i); System.out.println(hex);//3c String binary = Integer.toBinaryString(i)); System.out.println(binary);//111100 char c ='a'; char c1=(char)(c+2); System.out.println(c1);//c int j=i & 15;//获取到i的最低4位对应的值 String k1=(j<=9)?j+"":(char)(j-10+'a')+""; System.out.println(k1);//c i=i>>4; int z=i & 15; String k2=(z<=9)?z+"":(char)(z-10+'a')+""; System.out.println(k2+k1);//3c } }5、三元运算符:(条件表达式?表达式1:表达式2;) *要求:表达式1与表达式2为同种数据类型 既然是运算符,就一定会有运算的结果,结果的数据类型与表达式1,2的类型一致。 三元运算符在一定程度上可以与if-else互换
class TestSanYuan { public static void main(String[] args) { int i=10; int j=20; int max=(i>j)?i:j; String str =(i>j)? "i大":(i == j)?"相等":"j大"; System.out.println(max);//20 System.out.println(str);//j大 //互换 if(i>=j){ System.out.println("较小值为:"+i); }else{ System.out.println("较大值为: "+j);//较大值为:20 } //如何使用三元运算符,输出三个数中的较大值 int m=12; int n=18; int t=27; int max1=(m>n)?m:n; int max2=(max1>t)?max1:t; System.out.println(max2);//27 } }