学习目标
- 能够辨识关键字(掌握)
- 理解标识符的含义(掌握)
- 理解Java中的基本数据类型分类(掌握)
- 能够定义8种基本数据集类型的变量(掌握)
- 了解进制
- 理解基本数据类型的自动类型转换
- 理解基本数据类型的强制类型转换
- 了解ASCII编码表和Unicode编码表
- 理解int类型和char类型的运算原理
- 理解运算符++ --的运算方式
- 理解+符号在字符串中的作用
- 掌握赋值运算符
- 掌握比较运算符
- 理解逻辑运算符
- 掌握三元运算符的格式和计算结果
- 了解位运算符
关键字
常量
程序运行过程中值不许变化
①自定义常量:final
②字面值厂常量
注意事项:
字符常量,单引号里面有且仅有一个字符
空常量,不可以在输出语句中直接打印
标识符
①标识符的规则(必须遵守)
a.组成部分---->字母,数据,符号
b.符号只有——和$
c.数字不能作为开头
d.不能包含空格/严格区分大小写
②标识符规范(建议遵守)
a.类名:首字母大写,后面单词第一个字母大写
b.变量名:第一个单词首字母小写,后面单词第一个字母大写(驼峰命名)
数据类型
基本数据类型:四类八个
数值类型:byte(1个字节,-128~127), short(2个字节), int(4个字节) ,long(8个字节)
布尔类型:boolean---->只要true或false两个值
浮点类型:double(8个字节),float(4个字节)---->double比float的精度高
字符类型:char(2个字节)
字符类型的表现形式:
一个字符,eg:‘a',’速‘...
一个转义字符是一个字符 ,eg:\n,\t
每个ASCLL码对应的是一个字符:’a'=97,'A'=65,'0'=48
引用类型:字符串String,list....
变量
概念:定义一个容器,把数据存储起来
变量三要素:数据类型 ,变量名 ,值
使用变量的的要求:
先声明后使用
使用前必须初始化
变量有作用域,要在规定的范围内使用该变量
同一作用域变量名不能重名
变量的使用(注意每条语句结束要以;结尾)
数据类型 变量名; ---->声明变量
变量名=值;----->初始化变量
可以合二为一:
数据类型 变量名 = 值;
特殊变量定义规则
long类型:建议数据后加L表示。
float类型:建议数据后加F表示。
char类型:使用单引号''
String类型:使用双引号""
输出语句:(常见的两种)
换行输出语句:输出内容,完毕后进行换行:
System.out.println(输出内容);
直接输出语句:输出内容,完毕后不做任何处理:
System.out.print(输出内容);
注意事项:
换行输出语句,括号内可以什么都不写,只做换行处理
直接输出语句,括号内什么都不写的话,编译报错
如果()中有多项内容,那么必须使用 + 连接起来
如果某些内容想要原样输出,就用""引起来,而要输出变量中的内容,则不要把变量名用""引起来
进制
二进制:逢二进一------>十进制 位2次幂求和
八进制:逢八进一
十进制:逢十进一--->二进制 除二取余法
十六进制:逢十六进一
字节(byte)即是一种容量单位,也是一种类型
位(bit):数据存储的最小单位
转换关系:
8 bit = 1 Byte
1024 Byte = 1 KB
1024 KB = 1 MB
1024 MB = 1 GB
1024 GB = 1 TB
基本类型转化(Conversion)(七种数值类型--->boolean不参与)
1.自动类型转换(隐式类型转化)----->将范围小的类型自动转换到范围大的类型
2.强制类型转换(显示类型转化)----->将范围大的类型自动转换到范围小的类型
语法:数据类型 变量名 = (数据类型)被强转数据值;
3.特殊类型转换
任何类型+String类型运算的时候,结果一定是String类型
String类型不能通过强制类型转换成普通类型,但是可以通过包装类型的方法转化位别的包装类
语法: 基本包装类.parse包装类(String类型);
eg1:int num = Integer.parseInt(str);//后面才能讲到,借助包装类的方法才能转
eg2:float c = Float.parseFloat(s);
运算符(正常运算是从左到右,但是有一些运算符优先级较高先运算)
1.“+”的两种用法
“+”两边都是数值类型的话,那么就是四则运算的加法
“+"如果一边是字符串类型的话,那么就是拼接的作用
2.自加自减运算(以++为例)
单独使用:
变量前面++
int num = 3;
System.out.println(++num); //3---->先执行++,后执行别的语句
变量后面++
int num = 3;
//>当在一个表达式的时候,会执行别的,最后才会执行++
System.out.println(num++); //3---->先输出,后++
复合使用
public class OperatorDemo03 {
public static void main(String[] args) {
// 其他变量放在一起使用
int x = 3;
//int y = ++x; // y的值是4,x的值是4,
int y = x++; // y的值是3,x的值是4
System.out.println(x);
System.out.println(y);
System.out.println("==========");
// 和输出语句一起
int z = 5;
//System.out.println(++z);// 输出结果是6,z的值也是6
System.out.println(z++);// 输出结果是5,z的值是6
System.out.println(z);
int a = 1;
a = a++;//(1)先取a的值“1”放操作数栈(2)a再自增,a=2(3)再把操作数栈中的"1"赋值给a,a=1
int i = 1;
int j = i++ + ++i * i++;
/*
从左往右加载
(1)先算i++
①取i的值“1”放操作数栈
②i再自增 i=2
(2)再算++i
①i先自增 i=3
②再取i的值“3”放操作数栈
(3)再算i++
①取i的值“3”放操作数栈
②i再自增 i=4
(4)先算乘法
用操作数栈中3 * 3 = 9,并把9压会操作数栈
(5)再算求和
用操作数栈中的 1 + 9 = 10
(6)最后算赋值
j = 10
*/
}
}
练习:获取每个位数的数值
public static void main(String[] args) {
//1.定义一个四位数,例如1234
int num = 3526;
//2.通过运算操作求出个位,十位,百位,千位
int ge = num % 10; // 1234 / 10 = 123......4
int shi = num / 10 % 10; //1234 / 10 = 123%10
int bai = num / 100 % 10;
int qian = num / 1000 % 10;
System.out.println(num + "这个四位数个位上的数字是:" + ge);
System.out.println(num + "这个四位数十位上的数字是:" + shi);
System.out.println(num + "这个四位数百位上的数字是:" + bai);
System.out.println(num + "这个四位数千位上的数字是:" + qian);
}
3.&&和&区别,||和|区别
&&`和`&`**区别:`&&`和`&`结果一样,`&&`有短路效果,左边为false,右边不执行;`&`左边无论是什么,右边都会执行
||`和`|`**区别: `||`和`|`结果一样,`||`有短路效果,左边为true,右边不执行;`|`左边无论是什么,右边都会执行。
一个案例:
public static void main(String[] args) {
int i=1;
if (i>1 && ++i>1){ //如果前面是false,后面的不执行
System.out.println("hello");
}
System.out.println("i的值="+i); //1
if (i>1 & ++i>1){ //如果前面是false,后面也会执行
System.out.println("hello");
}
System.out.println("i的值="+i); //2
//这时候i的值为2
if (i>1 || ++i>1){ //如果前面是true,后面的不执行
System.out.println("hello");
}
System.out.println("i的值="+i); //2
if (i>1 | ++i>1){ //如果前面是true,后面也会执行
System.out.println("hello");
}
System.out.println("i的值="+i); //3
}
4.位运算符(了解)---->位运算是最快的运算
左移:<< 运算规则:左移几位就相当于乘以2的几次方
右移:>> 运算规则:右移几位就相当于除以2的几次方
无符号右移:>>> 运算规则:往右移动后,左边空出来的位直接补0,不看符号位
按位与:&
运算规则:
1 & 1 结果为1
1 & 0 结果为0
0 & 1 结果为0
0 & 0 结果为0
按位或:|
运算规则:
1 | 1 结果为1
1 | 0 结果为1
0 | 1 结果为1
0 & 0 结果为0
按位异或:^
运算规则:
1 ^ 1 结果为0
1 ^ 0 结果为1
0 ^ 1 结果为1
0 ^ 0 结果为0
按位取反:~
运算规则:
~0就是1
~1就是0
5.三元运算符
语法:表达式1?结果表达式1:结果表达式2
解读:如果表达式1的结果位true()成立,返回结果表达式1,否则返回结果表达式2
6.小结
++在前,先自加,后使用;
++在后,先使用,后自加。
&&同真为真,一假为假
||同假为假,一真为真
运算的优先级
小结:表达式尽量不要太复杂;()优先级最高