1、关键字
被java赋予特定含义的单词,特点:全部都是小写
以下是java的关键字列表,先了解下即可,其中void就是关键字,而 Void就不是关键字,只是一个占位符的类
访问控制
private protected public
类,方法和变量修饰符
abstract class extends final implements interface native new
static strictfp synchronized transient volatile
程序控制
break continue return do while if else for instanceof switch
case default
异常处理
try cathc throw throws
包相关
import package
基本类型
boolean byte char double float int long short null true false
变量引用
super this void
保留字
goto const
2、标识符
1)就是给类,接口,方法,变量等起名字的字符序列
2)组成规则:
A:英文大小写字母
B:数字
C:$和_
注意:
不能以数字开头;不能是java中的关键字;严格区分大小写
3)常见的命名规则 (根据业务来取名)
包全部小写:多级包-小写,并用.隔开。如:cn.rzdata
类或者接口:首字母大写。如HelloWorld
方法或者变量:首字母小写,从第二个单词开始首字母大写。如getMax()
常量:全部大写,且用下划线隔开。如STUDENT_AGE
3、变量
在程序的执行过程中,其值在某个范围内可以发生改变的量
变量的定义格式:
数据类型 变量名 = 初始化值;
数据类型 变量名;
变量名 = 初始化值;
4、进制转换
1)其他进制到十进制
系数:就是每一个位上的数值
基数:x进制的基数就是x
权:对每一个位上的数据,从右,并且从0开始编号,对应的编号就是该数据的权。
结果:系数*基数^权次幂之和。
2)十进制到其他进制
除基取余,直到商为0,余数反转。
5、数据类型
Java是一种强类型语言,针对每种数据都提供了对应的数据类型。
分类:
- 基本数据类型:4类8种
- 引用数据类型:类,接口,数组
在JVM 中,基本数据类型存的是什么?值 (类似于抽屉)
引用数据类型存的又是什么?地址 (这就是抽屉的钥匙)
基本数据类型
数值 占用字节数
byte 1
short 2
int 4
long 8
浮点数
float 4
double 8
字符
char 2
布尔
boolean 1
注意:
数值默认是int类型,浮点数默认是double
长整数要加L或者l
单精度的浮点数要加F或者f
6、数据类型转换
默认转换,从小到大。
byte,short,char – int – long – float – double
byte,short,char之间不相互转换,直接转成int类型参与运算
boolean类型不参与转换
强制转换
可能会有精度的损失
格式:目标数据类型 变量名 = (目标数据类型) (被转换的数据);
生产上常用的是:
Object是所有类的父类,也就是我也不知道返回值是多少,当然生产上我们一般是知道什么数据类型的
调用一个方法,返回值Object....User
Object obj- 对象.方法(...);
User user - (User)obj;
例如:
float f1 = 12.345f;
float f2 = (float)12.345;
(两种没区别)
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;(有问题,byte之间做运算,默认转换成int)
byte b4 = 3 + 4;(赋值的是常量,在接受范围内)
byte b = (byte)130;(将int类型转换成byte类型,但130超出了byte范围,所以结果等于-126,原理根据原反补计算
字符参与运算,查找ASCII里面的值
'a' 97
'A' 65
'0' 48
字符串参与运算
System.out.println("hello"+'a'+1); //helloa1
System.out.println('a'+1+"hello"); //98hello
System.out.println("5+5="+5+5); //5+5=55
System.out.println(5+5+"=5+5"); //10=5+5
7、原反补
在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。
1.原码
就是二进制定点表示法,即最高位为(符号位),“0”表示正,“1”表示负,其余位(数值为)表示数值的大小。
2.反码
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
3.补码
正数的补码与其原码相同;负数的补码是在其反码的末位加1。
byte b=(byte)130;
System.out.println(b);//-126
原理:
获取130这个数据的二进制。
00000000 00000000 00000000 10000010
这是130的原码,也是反码,还是补码。
做截取操作,截成byte类型的了。
10000010
这个结果是补码。
已知补码求原码。
符号位 数值位
补码: 1 0000010
反码: 1 0000001
原码: 1 1111110
8、常量
常量在程序执行的过程中,其值不发生改变
字面值常量:如“hello”;12;12.13;true;false;null
自定义常量:final修饰的
针对整数常量提供了四种表现形式
二进制 由0,1组成。以0b开头。
八进制 由0,1,…7组成。以0开头。
十进制 由0,1,…9组成。整数默认是十进制。
十六进制 由0,1,…9,a,b,c,d,e,f(大小写均可)组成。以0x开头。
9、注释
注释除了解释说明程序,提高了代码的阅读性,还可以帮助我们调试程序
单行注释 //
多行注释 /**/
文档注释 /** */
10、运算符
10.1算术运算符
+(正号,拼接),-,*,/,++,--,%(取余)
++,--(只能放在变量前后,常量不行,因为常量特性是不可变)
如果是单独使用如:x++,++x 结果一样
参与操作:int a=10;
int b=a++;先赋值,再自增
int b=++a;先自增,再赋值
例:
int x=3;
int y=4;
System.out.println(x*1.0/y); //得到小数位的做法,1.0是浮点数所以能得到小数位 0.75
int a=3;
int b=4;
int c=a++;
int d=--b;
System.out.println("a:"+a);//4 a++所以4
System.out.println("b:"+b);//3 --b所以3
System.out.println("c:"+c);//3 a++在后,先赋值,所以c=3
System.out.println("d:"+d);//3 --b在前,先运算,所以d=3
10.2、赋值运算符
=,+=,-=,*=,/=,%=
=是基本的赋值运算
short s=1;
s += 1;这里隐含了自动强制转换,相当于s =(short)(s+1)
10.3、比较运算符
==,!=,<,>,<=,>=;返回的结果是boolean类型
int x=1;
int y=2;
int z=1;
System.out.println(x==y);//false
System.out.println(x==z);//true
其中> < >= <= 只支持数值类型
10.4、逻辑运算符
&,|,^,!,&&,||; 用来连接boolean类型的
且:必须都为为真,结果为真
或:只要有一个为真,结果为真
异或:有两个不一样的,即一真一假,结果才为真
&:有false则false
|:有true则true
^(异或):相同则false,不同则true。
!(非):非true则false,非false则true; 特点:偶数个不改变本身。
&&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
||:结果和|是一样的,同理。左边是true,右边不执行。
(开发中一般用这个,运算更快)
10.5、位运算符
了解即可
&,|,^,~
<<,>>,>>>
注意: 要做位运算,首先要把数据转换为二进制。
int x = 10;
int y = 20;
//^的特点:一个数据对另一个数据位异或两次,该数本身不变。
System.out.println(x ^ y ^ y); //10
System.out.println(x ^ y ^ x); //20,这里相当于x与y的交换
System.out.println(y ^ x ^ y); //10,这里相当于y与x的交换
10.6、三目运算符
格式:比较表达式?表达式1:表达式2;
执行流程:
首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。
int x=100;
int y=200;
int z=x>y?x:y;
System.out.println(z); //200