变量和类型
Integer Long 包装类
long num = 10L;//10L表示long类型常量
双精度浮点型变量
double a = 1.1;
—> a*a = 1.21000000000000002 //IEEE规则
比较双精度浮点型变量大小
if(a-b < 0.00001 && a-b > -0.00001)
单精度浮点型变量
float a = 1.0f;//f表示单精度
字符型 char
char 在Java中2个字节
表示字符的规则 Unicode (与ascii并列
char a = ‘A’;
char b = ‘字’;
utf是进化版的Unicode
字节类型 byte 占一个字节
byte a = 100;
短整型 short 2个字节
short和char不能相互转换
布尔类型 boolean (真true 假false 是Java中的内置的关键字
Boolean类型的变量在jvm中的占1bit 1byte不确定 取决于不同的jvm
boolean a = true;
boolean b = false;
不能和int混合运算
Java的真假 C语言的0和非0 没有任何关系
字符串类型 ----------->引用数据类型
C语言字符串 字符数组
Java中的字符串是有一个单独的String类型
String a = "winner";
形如"winner"字符串常量 类型是String类型
与'\0'无关
String a = "hello";
String b = "winner";
a+b //字符串拼接 hellowinner
a+10 // 相加过程遇到其他类型的变量 其他类型自动转成String
//调用charAt方法查看下标位置
//返回值char
a.charAt(1)
变量的作用域
public class Test{
int num = 10; // 字段
public static void main(String[] args){
int num = 10; //局部变量
System.out.println("hello world");
}
}
局部变量的作用域与当前代码块{}相关
变量的命名规则
驼峰
//
常量
final修饰常量 —> const
final int num = 10;
final 还有其他用法~~~~
//
类型转换
int boolean完全不相关
a = b; b类型的范围比a类型大 不可赋值
-->解决:强制类型转换
强类型编程语言 不支持隐式转换 √
弱类型-------- 可支持隐式转换
静态类型 一个变量的类型在编译中确定了 运行时不能发生改变 //更不灵活 不容易出现问题 √
动态类型 一个变量的类型运行时可变 //更灵活
数值提升
byte a = 10;
byte b = 20;
byte c = (byte)a + b; //byte a + byte b -> int a + int b -> byte (int a + int b)
-->和C语言类似 拿两个比较短的整形变量 会触发数值提升 目的让硬件计算更加方便高效
进制转换
十进制转二进制
一个十进制转为二进制就是除2的得到每位的余数
八进制数:其实就是二进制位中的3个二进制位位1个八进制位
十六进制数:其实就是二进制位中的4个二进制位位1个十六进制位