Java基础语法
目录
1.关键字 、保留字、特殊值
-
关键字:
就是被java语言赋予特殊含义的单词。关键字的特点
组成关键的字母都是小写常见关键字
class,public,static,void … -
保留字
在Java中注册但还未使用
goto、const
-
**特殊值:**true、false、null
2. 标识符
Java 对各种变量、方法和类等要素命名时使用的字符序列称为标识符。
凡是自己可以起名字的地方都叫标识符。
1、标识符的命名规则
(1)Java的标识符只能使用26个英文字母大小写,0-9的数字,下划线_,美元符号$
(2)不能使用Java的关键字,保留字和特殊值,但能包含关键字和保留字。
(3)数字不能开头
(4)不能包含空格
(5)严格区分大小写,长度无限制。
2、标识符的命名规范
(1)见名知意
(2)类名、接口名等:每个单词的首字母都大写,形式:XxxYyyZzz,
例如:HelloWorld,String,System等
(3)变量、方法名等:从第二个单词开始首字母大写,其余字母小写,形式:xxxYyyZzz,
例如:age,name,bookName,main
(4)包名等:每一个单词都小写,单词之间使用点.分割,形式:xxx.yyy.zzz,
例如:java.lang
(5)常量名等:每一个单词都大写,单词之间使用下划线_分割,形式:XXX_YYY_ZZZ,
例如:MAX_VALUE,PI
3.常量
常量:
就是在程序的执行过程中其值不发生改变的量。
Java中常量的分类:
(1):字面值常量
(2):自定义常量
字面值常量的分类:
(1): 字符串常量 用双引号括起来的内容 “HelloWorld” ,“Hello”
(2): 整数常量 所有整数 12,23
(3): 小数常量 所有小数 12.34,56.78
(4): 字符常量 用单引号括起来的内容 ‘a’,‘A’,‘0’ (注意事项:单引号中只能是单个字母,单个数字,单个符号)
(5): 布尔常量 较为特有,只有true和false
(6): 空常量 null
4. 变量
变量的作用:用来存储数据
变量的本质:内存的一块存储区域
变量的三要素
-
数据类型:决定内存大小,可以存什么值
-
变量名:如何访问这块存储区域
-
值:里面存储的数据
声明变量:数据类型 变量名;
**变量赋值:**变量名 = 变量值;
声明变量和变量的赋值可以同时进行,也可以分开进行。但是在变量被访问之前,必须有值。
例如:数据类型 变量名 = 变量初始值;
变量的使用:通过变量名来访问这块存储区域
变量的使用应该注意事项:
1、先声明后使用
- 如果没有声明,会报“找不到符号”错误
2、在使用之前必须初始化
- 如果没有初始化,会报“未初始化”错误
3、变量有作用域
-
如果超过作用域,也会报“找不到符号”错误
-
作用域:可以看成 { 作用域 }
4、在同一个作用域中不能重名
5.数据类型
5.1 Java数据类型的分类
1、基本数据类型
8种:整型系列(byte,short,int,long)、浮点型(float,double)、单字符型(char)、布尔型(boolean)
2、引用数据类型
类、接口、数组、枚举.....
5.2 Java的基本数据类型
1、整型系列
(1)byte:字节类型
占内存:1个字节
存储范围:-128~127
(2)short:短整型类型
占内存:2个字节
存储范围:-32768~32767
(3)int:整型
占内存:4个字节
存储范围:-2的31次方 ~ 2的31次方-1
(4)long:整型
占内存:8个字节
存储范围:-2的63次方 ~ 2的63次方-1
注意:如果要表示某个常量数字它是long类型,那么需要在数字后面加L
2、浮点型系列(小数)
(1)float:单精度浮点型
占内存:4个字节
精度:科学记数法的小数点后6~7位
注意:如果要表示某个常量数字是float类型,那么需要在数字后面加F或f
(2)double:双精度浮点型
占内存:8个字节
精度:科学记数法的小数点后15~16位
3、单字符类型
char:字符类型
占内存:2个字节
Java中使用的字符集:Unicode编码集
字符的三种表示方式:
(1)‘一个字符’
例如:‘A’,‘0’,‘尚’
(2)转义字符
\n:换行
\r:回车
\t:Tab键
\\:\
\":”
\':
\b:删除键Backspace
(3)\u字符的Unicode编码值的十六进制型
4、布尔类型
boolean:只能存储true或false;占一个字节。
5.3 基本数据类型的转换
1、自动类型转换
在Java中整数默认是Int类型,小数默认是double类型;
(1)当把存储范围小的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围大的变量时,
byte->short->int->long->float->double
char->
int a = 'A';//char自动升级为int
double d = 5;//int自动升级为double
(2)当存储范围小的数据类型与存储范围大的数据类型一起混合运算时,会按照其中最大的类型运算
int a = 1;
byte b = 1;
double c = 1.0;
double num = a + b + c;//混合运算,升级为double
(3)当byte,short,char数据类型进行算术运算时,按照int类型处理
byte b1 = 1;
byte b2 = 2;
byte b3 = (byte)(b1 + b2);//b1 + b2自动升级为int
char c1 = '0';
char c2 = 'A';
System.out.println(c1 + c2);//113
(4)boolean类型不参与
2、强制类型转换
(1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围小的变量时,需要强制类型转换
double->float->long->int->short->byte
->char
注意:有风险,可能会损失精度或溢出
double d = 1.2;
int num = (int)d;//损失精度
int i = 200;
byte b = (byte)i;//溢出
(2)boolean类型不参与
(3)当某个值想要提升数据类型时,也可以使用强制类型转换
int i = 1;
int j = 2;
double shang = (double)i/j;
提示:这个情况的强制类型转换是没有风险的。
3、常量优化机制
当多个常量在一起计算时,它会把结果先算出来,然后判断计算结果是否在数据类型的范围内;
例:byte b = 3 + 4; 编译不报错
5.4 特殊的数据类型转换
1、任意数据类型的数据与String类型进行“+”运算时,结果一定是String类型
System.out.println("" + 1 + 2);//12
2、String类型不能通过强制类型()转换,转为其他的类型
6. 进制
6.1进制
计算机中任何的计算和存储都是以二进制方式实现的
位(bit) — 是计算机中最小的存储单位
字节(byte) — 计算机中基本的存储单元
1byte = 8bits、1KB = 1024Byte、1MB = 1024KB、1GB = 1024MB、1T = 1024GB
对于整数,有四种表示方式:
- 二进制:0,1 ,满2进1.以0b或0B开头(字母B大小写均可)。
- 十进制:0-9 ,满10进1.
- 八进制:0-7 ,满8进1.八进制数被冠以0来表示。
- 十六进制:0-9及A-F,满16进1,十六进制数被冠以0X来表示(字母X大小写均可)
如: 0x3f20(十六进制) 0732 (八进制)
6.2原码、反码、补码
所有数字在计算机底层都以二进制形式存在。一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。
Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位;当是long类型时,二进制默认占64位,第64位是符号位。
因为机器数是带符号的,因此机器数与一个数的“二进制值”还是有区别的。
- 计算机以补码的形式保存所有的整数。
- 正数的原码、反码、补码都相同。
- 负数的补码是其反码加1。
为什么要使用原码、反码、补码表示形式:
计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了.
7. 运算符
1、按照操作数个数的分类:
(1)一元运算符:操作数只有一个
例如:正号(+),负号(-),自增(++),自减(–),逻辑非(!),按位取反(~)
(2)二元运算符:操作数有两个
例如:加(+),减(-),乘(*),除(/),模(%)
(3)三元运算符:操作数三个
例如: ? :
2、Java基本数据类型的运算符:
(1)算术运算符
(2)赋值运算符
(3)比较运算符
(4)逻辑运算符
(5)条件运算符
(6)位运算符
7.1算术运算符
加法:+
减法:-
乘法:*
除法:/
注意:整数与整数相除,只保留整数部分
取模:% 取余
注意:取模结果的正负号只看被模数
正号:+
负号:-
自增:++
自减:–
原则:自增与自减
- ++/–在前的,就先自增/自减,后取值
- ++/–在后的,就先取值,后自增/自减
整个表达式的扫描,是从左往右扫描,如果后面的先计算的,那么前面的就暂时先放到“操作数栈”中
7.2 赋值运算符
基本赋值运算符:=
扩展赋值运算符:+=,-=,*=,/=,%=…
注意:所有的赋值运算符的=左边一定是一个变量
扩展赋值运算符=右边的计算结果的类型如果比左边的大的话会强制类型转换,所以结果可能有风险。
扩展赋值运算符的计算:(1)赋值最后算(2)加载数据的顺序是把左边的变量的值先加载,再去与右边的表达式进行计算
7.3 比较运算符
大于:>
小于:<
大于等于:>=
小于等于:<=
等于:== 注意区分赋值运算符的=
不等于:!=
注意:比较表达式的运算结果一定只有true/false
比较表达式可以作为(1)条件(2)逻辑运算符的操作数