一、常量
-
定义:程序在执行过程中,其值不发生改变的量。
-
分类:
1).字面值常量:
a.字符串常量,使用双引号包起来的内容:称为"字符串常量"。举例:“10”,“helloworld”;
b.字符常量,使用单引号包起来的单个内容:称为"字符"。举例:‘a’、‘A’、‘中’;
(注意事项:键盘上的每一个按键都是"字符"。当前这些字符单独使用的时候,不会计算,只是一个固定的字符;但是,一旦这些参与运算,会计算,每一个字符都对应ASCII码表的值!(ASCII码表:字符A-----65、字符a-----97、字符0-----48);
c.整数常量(默认十进制);
d.小数常量;
e.boolean常量,true/false;
f.空常量null。2).(面向对象)自定义常量。
example:
二、变量
-
定义:在程序的执行过程中,其值发生改变的量!
-
变量的三要素:
1). 数据类型 ----- “一种限定”;
2). 变量名称 ----- “符合 标识符的规则”;
3). 初始化值 ----- 根据数据类型,给变量名称赋值!
-
格式:
1). 格式1:定义并且初始化。
数据类型 变量名称 = 初始化值;
int num = 10 ; (分号在Java语言中,表示当前行语句结束!)2). 格式2:先定义,在使用之前必须初始化。
数据类型 变量名称;
/example:
int num2 ;
num2 = 10 ;/
变量名称 = 初始化值; (使用这个变量之前,必须赋值; ) -
Java中的数据类型的划分:
1). 基本数据类型。(四类八种)
一些变量,没有提示使用什么类型,默认int(根据具体需求)
①. 整数类型
a. byte:字节类型,使用范围:-128~127,占用1个字节;
b. short:短整型,占2个字节;
c. int:整数默认类型,(-2^31 - 2^31-1),占4个字节;
d. long:长整型,(定义系统时间—换算毫秒值) ,占8个字节;
注意事项:定义long类型,需要在初始化值的后面加上一个标记(L/l)。
②. 浮点类型:默认double。
a. float:单精度,占4个字节。
注意事项:需要定义的float需要在值的后面加标记:F/f。
b. double:双精度(默认类型) 。场景:商品价格,占8个字节。
③. 字符类型
char :字符,占2个字节。
④. 布尔类型boolean(不会进行类型转换:仅仅只是表示逻辑判断!结果不是true/false)。
2). 引用数据类型。数组(基本类型,引用类型)、类(具体类,抽象类)、接口。举例:int[ ] arr 、String[ ] args。
-
码表:
gbk (中国中文编码表) 前期:notepad++:ASCII
gb2312(gbk升级版)
big-5:大五码 (繁写字体)
utf-8:一个中文对应三个字节;后期:idea工具utf-8
iso-8859-1:拉丁文名码表 (考虑都是英文)
JS :日本系统编码 -
定义变量的注意事项:
1).目前来说:我们定义 “局部变量”,在方法定义中或者方法声明上的变量;
2).a).先定义,在使用前去赋值,如果没有报错,系统 “可能尚未初始化变量”;b).直接给变量初始化;
3).Java是强类型语言:不能够将一个变量定义多次;javascript(js),若类型语言:一个变量重复定义的;
4).定义变量::推荐格式:一行定义一个变量,也可以一行定义多个变量;
5). 基本数据类型 除了 boolean,不参与运算!
变量在进行运算的时候,需要保证数据类型一致!
三、两种类型转换——Java中的隐式类型转换和强制类型转换
-
Java中的隐式类型转换 :默认类型提升:byte,short,char三者之间不转换,一旦参与运算,先转换为int类型!
-
Java中的强制类型转换:
目标数据类型(目前使用基本类型) 变量名称 = (目标数据类型)(初始化值);
example:
int a = 3 ;
byte b = 4 ;
byte result = a + b ;
// 结果为int值,但是接收byte类型;
报错:不兼容的类型: 从int转换到byte可能会有损失;
更正:
byte c = (byte)(a + b) ; //强制类型转换 -
example:
定义三个变量
byte b , b1 = 3 , b2 = 4 ;
1)b = b1 + b2 ;
2)b = 3 + 4;
1)和2)哪句会编译失败!1)属于变量相加,需要考虑数据类型问题, 默认类型提升 byte,char,short,三者不转换,一旦参与运算,优先提升int 解决方案: 强制类型转换(显示转换) 目标类型 变量名 = (目标类型)(初始化值); 2)正常编译通过: b = 3 + 4 ; 常量相加,---先相加,然后看其结果是否在byte类型的范围内 byte :-128 ~127 b = 7
-
example:
byte b = 130 ; 编译会不会有问题;如果有,如何解决,结果是多少?
(byte取值范围:-128~127)
当前结果数据值已经超过了当前类型的范围:所以整数默认int
使用int类型接收:130
过程:
默认int类型-----原码 十进制-----二进制
原码,反码,补码相同
00000000 00000000 00000000 10000010 130
byte b = (byte)130 ;
(00000000 00000000 00000000) 10000010 使用这个补码进行"截取" byte 1个字节
最高符号位 数值位
1 0000010 补码
- 1
--------------------------------------
1 0000001 反码
1 1111110 原码
--------------------------------------
- 64+32+16+8+4+2+0 = -126
(快速十进制与二进制转换——8421码)
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
四、运算符:变量在程序的运行中使用的一些符号!
-
算术运算符:
1).基本的算术运算符:+,-,*,/(默认取整),%(取余数)
2).扩展的算术运算符:++,-- 场景:统计 / 循环语句中使用
结论:
a. 单独使用++/–:无论数据前还是后,都是自增1或者自减1
b. 参与运算:
参与运算使用:++/–数据的后面:先进行运算,然后自增或者自减1!
参与运算使用:++/–数据的前面:先进自增1或者自减1,然后参与运算! -
赋值运算符
1). 最基本的赋值运算符:=,将=右边的数据赋值左边的变量。
example:int x = 10 ;
将10这个数据赋值给int类型的变量x
注意:=不能写成==(比较运算符)
2). 扩展的赋值运算符:+=,-=,=,/=,%=
example:
int y = 20 ;
y += 30 ; //类似于 :y = y + 30 ;
将+=右边的数据和左边的数据相加,在将结果赋值给左边的变量y
example:
short s = 1 ;
1)s = s + 1 ;
2)s +=1 ;
哪一句代码编译失败,如何解决;哪一行代码编译成功,说明原因!
考点: 扩展的赋值运算的特点
+=,-=,=,/=,%= :存在特点 :隐藏了强制类型转换
s += 1 ; <==>等价于 s = (short)(s+1) ; -
关系(比较)运算符:<,<=,>,>=,==,!=
这些符号连接的表达式无论是简单还是复杂的,最终都是true或者false。 -
逻辑运算符
1). 基本的逻辑运算符
a. 逻辑单与&: 并列关系
特点:有false,则false!
b. 逻辑单或|: :满足一个即可
特点: 有true,则true
c. 逻辑异或^:
特点:相同则为false,不同则为true
简单记:男女关系
男女,女男 : true
女女,男男 : false
d. 逻辑非!:
非true,则false;非false,则true;偶数给非是它本身!2). 扩展的逻辑运算符
逻辑双与&&:短路效应,左边为false,右边不执行;
逻辑双或||:短路效应,左边为true,右边不执行。 -
注意 + 作用:
1)算术运算符 :加法运算
2)表示一个数据:正数 +7
3)字符串的拼接符号
字符串+任何数据=“新的字符串”
任何数据+字符串 ="新的字符串"
五、(扩展内容)进制:数据进位一种方式。
-
进制的由来
-
不同的进制
1). 二进制,逢二进1,由0,1组成 ,以"0b"开头;
2). 八进制,逢八进1,由,0,1,2,3,4,5,6,7组成 ,以"0"开头;
3).十六进制,逢十六进1,由0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,以"0x"开头;
4).十进制:逢十进1, 整数默认。
单位换算:
1byte = 8bit (8个比特位:8个电信号 ) :最基本二进制数据
1kb = 1024 byte
1m = 1024 kb
1g = 1024m
1t = 1024g -
任何进制转换十进制:
-
8421码——十进制与二进制间快速转换
-
有符号位的数据表示法:
在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。a. 原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
b. 反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
c. 补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
六、(扩展内容)键盘录入
键盘录入数据的操作步骤:
1). 导包:java.util.Scanner; (文本扫描器),以后在Java语言中:
只要不是java.lang.*包下的类,都需要导包
书写位置:在class上面
import java.util.Scanner;
2). 创建文本扫描器对象:
Scanner 对象名 = new Scanner(System.in) ;
3). 提示用户,并接收数据 (回车—告诉jvm “录入完毕”)
System.out.println(“请您输入一个数据:”) ;
int 变量名 = 对象名.nextInt() ;
4). 使用这个变量