一、变量
1、理解
概念:内存中的一块数据存储空间
2、变量的三要素
数据类型
变量名
变量值
3、变量的语法和使用步骤★
步骤1:声明变量(计算机开辟一块空间)
数据类型 变量名;
步骤2:为变量赋值(初始化)
变量名 = 值;
步骤3:使用变量(打印、运算、比较等)
System.out.println(变量名);
注意:
①前两步可以合二为一:数据类型 变量名 = 值;
②可以同时声明多个变量,但要求变量的类型一致
语法:数据类型 变量名,变量名,变量名;
示例:int a=1,b,c=1;
4、变量的使用特点
①同一个作用域,变量不可以重名
作用域:变量的作用范围(根据变量的定义位置来确定变量的作用域)
public static void main(String[] args){
int a;
String a;
}
②变量必须先声明、赋值最后再使用
③变量的值可以更新,但必须在同一个类型范围内
④变量具备内存的“易失性”的特点
5、标识符
1、理解
凡是可以自己起名的地方,都称为标识符。如变量,方法,类,包,接口等
2、标识符的命名规则
1)由26个英文字母大小写,0-9 ,_或 $ 组成,数字不可以开头
2)不可以使用关键字和保留字,但能包含关键字和保留字
3)Java中严格区分大小写,长度无限制
4)标识符不能包含空格
3、标识符的命名规范
遵循“见名知义”原则
1)包名:多单词组成时所有字母都小写:xxxyyyzzz
2)类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
3)变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
4)常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
二、数据类型
1、常见的数据类型
int:用于保存整型的
double:用于保存浮点型的
char:用于保存单个字符,要求字符值必须用单引号引起来
String:用于保存字符串,要求字符串值必须用双引号引起来
2、数据类型的分类 ★
3、基本数据类型详细介绍
(1)整型
名称 | 所占字节空间 | 数值范围 | |
byte | 字节整型 | 1个字节 | -27~27-1 |
short | 短整型 | 2个字节 | -215~215-1 |
int | 整型 | 4个字节 | -231~231-1 |
long | 长整型 | 8个字节 | -263~263-1 |
特点:
1、编译器默认的整型为int
2、long类型的标记为l或L
3、每个整型保存的数值不能超过所表示的范围,否则 会报错误!
(2)浮点型
名称 | 所占字节空间 | |
float | 单精度浮点型 | 4个字节 |
double | 双精度浮点型 | 8个字节 |
特点:
1、浮点型的存储和整型的存储不一样
浮点型真实的存储,和真正的数值之间有一些差距,所以叫“浮点型”
2、如果想表示更高精度的浮点数,可以使用BigDecimal
如果想显示指定位数的浮点数,可以使用格式的方法
double a = 12.3;
System.out.printf("%.2f",a/3);
3、编译器默认的浮点型为double类型
4、float类型的常量值最好加上 f或F标记
float f = 3.6;//错误
float f = 3.6f;
(3)字符型
名称 | 所占字节空间 | 使用的字符编码 | |
char | 字符型 | 2个字节 | Unicode |
特点:
1.char类型的常量值形式:
char c = '';//× char c = ' ';//√ char c = 'c'; char c = '\u00f2'; char c = 100;
2.char类型的变量在进行运算或比较时,类型自动提升成int类型处理
案例1:
char c = 'd';
System.out.println(c+2);//102
案例2:
char c = '2';
char d = 2;
System.out.println(c==2);//false
System.out.println(d==2);//true
3.每个char类型的变量存储时,都需要先去对应的码表找到对应的码值,然后存储
☆char——>码值——>存储(char类型的底层实际上就是以整型存储的!)
每个char类型的变量读取时,都需要先将码值根据码值找到对应的字符,然后访问
☆码值——>char——>读取
(4)布尔型
名称 | 所占字节空间 | 表示的值 | |
boolean | 布尔 | 1个字节 | true|false |
特点:
1、用于保存关系的结果,像关系表达式、逻辑表达式的结果就可以使用布尔型存储
2、一般当做条件,用在if结构或循环结构中
4、数据类型之间的转换
(1)基本数据类型之间的转换
除:boolean
1、自动类型转换
规则:小——>大
语法:double d = 1;
2、强转类型转换
规则:大——>小
语法:int i = (int)1.5;
特点:
①自动提升的原则。表达式的最终结果的类型为 操作数中最大的类型!
②强转符号只针对于最近的操作数有效,一般使用小括号提升优先级
(2)String类型和基本类型之间的转换
1、基本类型——>String类型
规则:直接拼接空字符串即可
语法:
char c = '中';
String s = c+"";
2、String类型——>基本类型
规则:除char之外,其他的都是通过 包装类型.parseXX的方法
语法:除char之外:
String s = "12345";
int i = Integer.parseInt(s);
char:
String s = "asfgh";
char c = s.charAt(1);//提取单个字符
char[] ch = s.toCharArray();//将整个字符串转换成字符数组
三、运算符
1、常见运算符
算术运算符
关系运算符
逻辑运算符
赋值运算符
三目运算符
2、运算符详细介绍
(1)算术运算符
1、基本算术运算符
+ - * / %
注意:/左右两边都是整型,结果取整
2、自增、自减运算符
++ --
特点:
①属于一元运算符:i++、--i
②可以作为独立的语句或作为表达式使用
作为独立的语句使用:i++;等价于++i;效果上等价于 i=i+1;
作为表达式使用:int j = i++; 先赋值后自增,等价于 int temp = i++; i++; j = temp;
int j = ++i; 先自增后赋值
③自增、自减运算符,底层做了优化,所以效率较高,其次不用手动的类型转换
int i = 10;
i*=1.523;//√
System.out.println(i);//15
(2)关系运算符
> < >= <= == !=
(3)逻辑运算符
名称 | 语法 | 特点 | |
&& / & | 与 | 条件1&& 条件2 | 两个条件都成立,结果为true |
|| / | | 或 | 条件1|| 条件2 | 只要有一个条件成立,结果为true |
! | 非 | !条件 | 如果条件成立,结果为false,否则为true |
&&和&的区别:
&& 如果第一个条件不成立,则不再执行第二个条件,效率较高
& 不管第一个条件是否成立,都要执行第二个条件,效率较低
||和|的区别:
|| 如果第一个条件成立,则不再执行第二个条件,效率较高
| 不管第一个条件是否成立,都要执行第二个条件,效率较低
(4)赋值运算符
1、基本赋值运算符 =
2、复合赋值运算符 += 、-= 、*=
特点:
1、运算顺序从右往左
2、赋值运算符的左边只能是变量,右边可以是变量、常量、表达式、方法调用
3、复合赋值运算符具备以下特点
①i+=3;效果上等价于 i=i+3;但效率比i=i+3;较高
②编译器内部做了优化,不用我们手动的类型转换了
③复合赋值的变量必须提前进行初始化
(5)三目运算符
条件?操作数1 :操作数2
特点:
1、如果条件成立,结果为操作数1,否则为操作数2!
2、两个操作数的类型要求一致或兼容
3、运算符优先级
()——>!——>++ -->算术运算符——>关系运算符——>逻辑运算符——>三目运算符——>赋值运算符
四、进制与位运算符
1、进制
(1)进制介绍
十进制:0-9 ,满10进1
二进制:0—1,满2进1,以0b或0B开头
八进制:0-7,满8进1,以0开头
十六进制:0-9 A-F,满15进1,以0x或0X开头
(2)进制转换
1、其他进制转换成十进制
规律:从最低位开始,依次将每个位上的数提取出来,乘以2|8|16的幂(幂从0开始),最后累加即可
2、十进制转换成其他进制
规律:不断除以2|8|16,将余数倒过来即可
3、二进制转换成八进制或十六进制
规律:从最低位开始每3位或每4位 ,转换成一位八进制或十六进制数即可,位数不够,前面用0补齐
4、八进制或十六进制转换成二进制
规律:将每个位上的数,拆分成3位或4位二进制,位数不够,前面用0补齐
2、位运算符
(1)常识
1、计算机底层的 都是以二进制的补码形式进行存储和运算的
2、相关概念
正数:三码合一
负数:
原码:将负数进行 进制转换的结果,其中最高位代表符号位
反码:最高位不变,其他位按位取反
补码:反码基础上+1
(2)常见的位运算符
1、<< 左移 :a<< b.将a左移指定的b位数,空缺位补0
2、>> 右移 :a>> b.将a右移指定的b位数,空缺位补符号位
3、>>> 无符号右移:a>>> b.将a右移指定的b位数,空缺位补0
4、& 与:a&b 按位取与,两个都是1,结果为1,否则为0
5、| 或:a|b 按位取或,两个都是0,结果为0,否则为1
6、^异或:a^b 按位异或,两个相同为0,不同为1
7、~取反:~a 按位取反,如果为1,则结果为0,否则结果为1
注意:
都是以补码形式
最高位参与运算!