常量分类
- 字符串常量 用双引号括起来的内容 “abc”
- 整数常量 123
- 小数常量 12.3
- 字符常量 单引号括起来的内容,里面只能放单个数字,单个字母或单个符 空格也可以
- 布尔常量 boolean类只有两个值,true和false
进制
- 任何一个进制,X进制,就是逢X进1
电脑上面的进制
- 1byte = 8 bit
- 1k = 1024 byte
- …..
厂商使用1000为进制。
*例如一个500g的硬盘,实际容量为- 500 * 1000 * 1000 * 1000 / 1024 / 1024 / 1024 = 465g
*各个进制的表现形式
- 500 * 1000 * 1000 * 1000 / 1024 / 1024 / 1024 = 465g
- 二进制 0b开头 0b100
- 八进制 0开头 0100
- 十进制 默认即为10进制
- 十六进制 0x开头(x可以大写) 0x100
代码所在行比前一行多缩进2个Tab即可
class Demo1_Scale { public static void main(String[] args) { System.out.println(0b100); //2进制结果4 整数常量,所以没有双引号 System.out.println(0100); //8进制结果64 System.out.println(100); //10进制 结果100 System.out.println(0x100); //16进制 结果256 } }
各个进制到10进制的转换方法
- 把系数*基数的权次幂相加即可
- 10进制到各个进制的转换方法
- 除积倒取余
8421码(极其好用)02.07视频课件
正码、反码、补码
- 正码即2进制定点表示法,最高位为符号位,“0”正,“1”负,其余7位镖师数值大小
- 反码:正码反码与其原码相同,负数的反码是对其原码逐位取反,但符号位除外
- 补码:正数补码与其原码相同,负数补码是在其反码末位加1
变量
- 用来不断地存放同一类型的常量,并可以重复使用
- 数据类型
- 变量名(合法的标识符)
- 变量值
数据类型的概述和分类
- A:为什么有数据类型
- Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间(吃多大饭,给多大碗)
- B:Java中数据类型的分类
- 基本数据类型
- 引用数据类型
- 面向对象部分讲解
- **C:基本数据类型分类(4类8种)
- 整数型
- byte 占一个字节 -128到127
- short 占两个字 -2^15~2^15-1
- int 占四个字节 -2^31~2^31-1
- long 占八个字节 -2^63~2^63-1
- 浮点型(小数型)
- float 占四个字节 -3.403E38~3.403E38 单精度
- double 占八个字节-1.798E308~1.798E308 双精度
- 字符型
- char 占两个字节 0~65535 (没有复数)
- 布尔型
- boolean
- boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小 **
- boolean
- 整数型
数据类型的赋值与输出
class Demo1_DateType{ //数据类型DataType
public static void main(String[] args) {
//整数类型
byte b = 10; //占1个字节,-128 到 127
short s = 20; //占2个字节
int i = 30; //占4个字节,这是默认的数据类型
long x = 88888888880L; //占8个字节 默认的整数是int类型,还没有赋值给long x 就报错了,所以先定义这个数是long类型,即在数字后面加L,(大小写都可以,如果对long类型后面用L进行标识,最好使用大写,因为小写l和1实在是太像了)
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(x);
//System.out.println(12345 + 5432l); //这个是5432L 小写L和1太像了,可能出面试题
//浮点类型
float f = 12.3F; //占4个字节 如果不在后面注明F,可能损失精度
double d = 33.4 ; //占8个字节 默认的小数类型就是double
System.out.println(f);
System.out.println(d);
//字符类型
char c = 'd'; //占两个字节
System.out.println(c);
//布尔类型
boolean b1 = true;
boolean a =false;
System.out.println(b1);
System.out.println(a);
}
}
使用变量注意事项
- 作用域问题
- 同一个区域不能使用相同的变量名
- 初始化之问题
- 局部变量在使用之前必须赋值
一条语句可以定义几个变量
可以定义非常多 int a,b,c,d,……
int a,b,c,d; a = 1; b = 2; c = 3; d = 4;
隐式转换
int x = 3; byte b = 4; x = x + b; //先把byte类型的提升为int类型,在进行计算,输出结果是int类型 System.out.println(x);
强制转换
int x = 3; byte b = 4; b = (byte)(x + b); //只会将结果的最低位数一个字节赋值给b,其他三个字节丢失 System.out.println(b);
强制转换例子
byte a = (byte)(126 + 6); System.out.println(a); /*输出结果为-124,原因是132二进制为00000000 00000000 00000000 10000100 存入a的为一个负数 1 0000100 这是一个负数的补码 它的反码为 1 0000011 它的正码为 1 1111100 即-124*/
强制转换的注意事项
- java编译器有常量优化机制,在编译的时候,java可以直接算出常量大小,判断是否超出变量存储范围,而变量无法判断。
字符与字符串参与运算的情况
class Demo4_DateTypeConversion {
public static void main(String[] args) {
System.out.println('a' + 1); //输出结果 98 字符和整数相加,得出的结果是整数
System.out.println('a' + '1'); //输出结果 146 “a"对应的数字97加上“1”对应
System.out.println((char)('a' + 1)); //输出结果 b "a"对应97 + 1 = 98 即为“b”对应的2进制数字
System.out.println('a' + 1 + "hello" + 'a' + 1); //输出结果 98helloa1 带有字符串的,字符串之前的没有影响,字符串之后的全部变成字符串的形式
System.out.println("5 + 5 =" + 5 + 5); //输出结果 5+5=55 字符串后面全部直接变成字符串
System.out.println("5 + 5 =" + (5 + 5)); //输出结果 5+5=10 使用括号提升了后面“5+5”的优先级
}
}
- char数据类型
- char数据范围 0-65535 占2个类型
- char = 97 输出之后是a,根据ASCⅡ一一对应
- char类型可以存储中文,例如; char = ‘中 ‘