Java入门part2–变量和类型
关键字:基本数据类型和字符串类型,类型转换,变量命名规则,列出了和C语言种不同的点方便区分理解
数据类型
- 所有的java编程语言中的整数类型都是带符号的数字
- Java中定义变量一定要初始化,否则会报错
- Java中没有全局变量这一说(C语言中局部变量不初始化是随机值,全局变量是0)
- 跟C语言不同的是,给某类型数据赋大于其能表示范围的数据时,编译不通过,而C语言就可以执行出来=》Java很安全
整型变量
byte 字节类型
- 用byte定义一个字节,占1个字节 ,表示范围-128-127
- Java中的字节类型对标的是C语言中的char
- 也是属于数值类型的一种
short 短整型
- 占2字节 短整型
- 表示范围太小,一般不推荐用
int 整型
- Java中int型占4个字节,跟系统没有关系 因为Java具有跨平台性,一次编译到处运行
- Integer.MAX_VALUE 获得int的最大值
- Integer.MIN_VALUE 获得int的最小值
其中Integer是Java中自己的一个类,是int对应的包装类
int short 之类的都是Java的内置类型
溢出
long 长整型
- 长整型long占8个字节,与平台无关
- 注意赋初值的时候
long a=10L;
也可以写成long a=10;
(默认把整型赋值给long)或long a=10l;
但不推荐
浮点型变量
double 双精度浮点型
- double 双精度浮点类型,8个字节
double num = 1.1;
System.out.println(num * num)
// 执行结果
1.2100000000000002
注意:Java 中的 double 虽然也是 8 个字节, 但是浮点数的内存布局和整数差别很大, 不能单纯的用 2 ^ n 的形式表示数据范围.
float 单精度浮点型
- 单精度浮点类型 4字节
flout a=12.5f;
强类型语言:越需要进行强转的就是强类型语言,不强转编译不通过
若flout a=12.5
会报错,默认12.5为double类型,flout a=12.5d
就可以,所以遇到小数一般定义为double类型
字符类型
char
- 字符类型 2字节
- 注意和C语言中的char区分开 在C语言中表示1个字节迷你整型,分为有符号,有符号表示范围在(-128~ 127)和无符号(表示范围在0~ 255)
- Java中char无符号 表示范围0~ 2^16-1(65535)即’\u0000’–’\uffff’
- 编码和解码 C语言中ASC码 java中Unicode码 可以表示65526个字符,可以表示的范围更大 中文拉丁文等都可以表示(相当于ASC码的扩充)
布尔类型
boolean 只能给其赋值true或者false 标准并未规定布尔类型字节大小
字符串类型 重要
- C语言没有字符串类型
- Java中定义字符串类型用String String str=“hello”;
并未有\0结尾 - 注意 String不是基本类型,属于引用类型
- int short long double float char byte boolean 是Java中的八种内置类型(即简单类型)
- Java中的字符串拼接直接用
+
就可以,C语言中要调用库函数strcat()
变量
- 变量的命名:
- 名字只能由字母数字下划线组成
- 数字不能开头
- 变量名大小写敏感num和Num是两个不同的变量
- 变量名小驼峰形式(多个单词组成时第一个单词小写后面单词首字母大写)
常量
- C语言中用
const
定义常量 必须在定义的同时初始化 - Java中用
final
修饰的变量是常量final int a=10;
可以不在定义的同时进行初始化,但是一旦被初始化就不能再更改 - 常量:运行期间不可以改变 变量:运行期间可以改变
final还可以修饰函数 类 接口
类型转化
int 和long进行数据转化
int a=1;
long b=2;
a=b;//不可以 long8字节,int 4字节 大类型赋值给小类型,会报错 如果需要这样转则需要强制类型转换 a=(int)b;
b=a;//可以 小类型给大类型 默认发生隐式类型转换
注
-
int和boolean 转换不了 因为类型不兼容 不可以进行相互的赋值 强转也不可以
-
short和char都是2个字节 但是直接互相赋值编译不通过,因为一个是字符类型 一个是数值类型 非要这么写可以强转
-
当两个类型进行运算时 运算过程中小类型会先提升为大类型再运算,所以运行结果是大类型
+CPU通常是以4个字节为单位往内存中读数据,所以计算时像short byte这种不够四个字节的都会提升为四个字节再运算,所以运算出来是int型,byte c=(a+b);
会报错,结果要赋给byte类型的话要强转
byte a=10;
byte b=20;
byte c=(byte)(a+b); /CPU通常是以4个字节为单位往内存中读数据,所以计算时像short byte这种不够四个字节的都会提升为四个字节再运算,所以运算出来是int型,结果要赋给byte类型的话要强转