概念
我们的程序要被运行,一定被加载到内存中,不同的数据类型,会放在JVM机的不同空间,当程序运行时会通过变量名称来访问数据.变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。
1 变量的使用
- 声明变量
int num1; // 声明
int a; //这就是声明了一个变量,变量名是a
float num1;// 这也声明了一个变量,表示一个float类型的小数,变量名是num1 - 赋值
num1 = 30; //赋值
在声明变量的时候,就给值。
int a=45;//这就是初始化变量a
注意: 对于局部变量(在方法中定义的变量,需要初始化后,才能使用) - 使用
System.out.println(“num1=” + num1) // 使用 - 注意:变量的声明和赋值,可以一句话 int num1 = 30;
2 变量使用注意事项
- 变量表示内存中的一个存储区域(不同的数据类型,占用的空间大小[字节]不一样)
- 该区域有自己的名称(变量名)和类型(数据类型)
- 变量必须先声明,后使用
- 该区域的数据可以在同一类型范围内不断变化
- 变量在同一个作用域内不能重名
- 变量=变量名+值+数据类型 (这就是变量的三要素),这一点请大家注意。
3 变量的类型
变量主要分两个大类:基本数据类型和应用数据类型.
基本数据类型有8个, 数值型[byte(1个字节), shor(2个字节),int(4个字节),long(8个字节) ],浮点数[小数, float (单精度度 4个字节), double(双精度 8个字节), float的表示的范围和精度小于double的]. char (2个字节, ‘大’ , ‘\t’) , 布尔类型( 在java中, 布尔类型只有两个值 true, false)
在java中,String 类型不是基本类型
引用类型 [类, 接口,数组等等]
如下图:

4整型类型

byte 3 和 short 3 的存储形式

整型使用细节
-
Java各整数类型有固定的表数范围和字段长度,不受具体OS[操作系统]的影响,以保证java程序的可移植性。
-
Java的整型常量(字面量, 1 ,45, 90)默认为 int 型,声明long型常量须后加‘l’或‘L’
-
java程序中变量常声明为int型,除非不足以表示大数,才使用long
-
bit: 计算机中的最小存储单位。byte:计算机中基本存储单元。[二进制再详细说,简单举例一个 byte 3 和 short 3 ]
5 浮点类型
Java的浮点类型可以表示一个小数,比如 123.4 ,7.8 ,0.12等等

- 浮点数在存放的形式为 符号位+指数位+尾数位
- 浮点数都是近似值,因此会有精度损失
- 如果希望精度较高,则选择使用double
使用细节
- 与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体OS的影响。
- Java 的浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。
- 浮点型常量有两种表示形式
十进制数形式:如:5.12 512.0f .512 (必须有小数点)
科学计数法形式:如:5.12e2 [5.12 * 10^2 512 5.12E-2 [5.12/10^2 = 0.0512]
通常情况下,应该使用double型,因为它比float型更精确。
6 字符类型
字符类型可以表示单个字符,字符类型是char,char是两个字节(可以存放汉字),多个字符我们成为字符串,在java中String这种,数据类型表示,但是String不是基本数据类型,而是类,类是复合数据类型[关于类我们后面详细讲解.
字符型数据在计算机中存储的是字符的ASCII 码值
字符型 存储到 计算机中,需要将字符对应的码值(整数)找出来
存储:字符’a’——>码值 (97)——>二进制 (1100001)——>存储()
读取:二进制(1100001)——>码值(97)——> 字符’a’——>读取(显示)
下面的是ASCII 码表:
字符类型使用细节
- 字符常量是用单引号(‘ ’)括起来的单个字符。例如:char c1 = ‘a’; char c2 = ‘中’; char c3 = ‘9’;
- Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; // '\n’表示换行符
- 在java中,char的本质是一个整数,在输出时,是unicode码对应的字符。
4)可以直接给char赋一个整数,然后输出时,会按照对应的unicode 字符输出 [’\u0061’ 97] - char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码.
7 布尔类型:boolean
基本介绍
布尔类型也叫boolean类型,booolean类型数据只允许取值true和false,无null
boolean类型占1个字节。
boolean 类型适于逻辑运算,一般用于程序流程控制:
1)if条件控制语句;
2)while循环控制语句;
3)do-while循环控制语句;
4)for循环控制语句
在java中boolean类型只能是true或者false ,没有其他取值.
8 基本数据类型转换
自动类型转换
当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换。
自动转换表:

- 基本数据类型的转换分为两条线. 如上图.
- 精度小的(范围小)的可以自动的向精度大(范围大) 转换.
- char 和 (byte,short) 不发生自动转换
- boolean不参与类型的自动转换
细节说明
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
- 当我们把精度(容量)大 的数据类型赋值给精度(容量)小 的数据类型时,就会报错,反之就会进行自动类型转换。
- (byte, short) 和 char之间不会相互自动转换。
- byte,short,char 他们三者可以计算,在计算时首先转换为int类型。
- boolean 不参与转换
- 自动提升原则: 表达式结果的类型自动提升为 操作数中最大的类型
public class TypeAutoConvertDemo {
public static void main(String[] args) { //输入快捷键 ctrl + ], 能定位对应的}
char c1 = 'a';
int num1 = c1;//OK char -> int
long num2 = c1; //ok char -> long
int num3 = 1;
//int num4 = num3 + 1.1f; //错误 float -> int
//double num4 = num3 + 1.1f; //float -> double
//float num4 = num3 + 1.1f + 1.0; //错误 double -> float
//(byte, short) 和 char之间不会相互自动转换
byte b1 = 2;
short s1 = b1; //ok byte->short
//char c2 = b1; //错误, byte->char
//char c3 = s1; // short -> char
//byte,short,char 他们三者可以计算,在计算时首先转换为int类型
byte b2 = 1;
short s2 = 1;
short s3 = b2 + s2; //错误 int -> short
}
}
强制类型转换
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 ( ),但可能造成精度降低或溢出,格外要注意。
- 当进行数据的大小从 大——>小,就需要使用到强制转换
- 强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
- char类型可以保存 int的常量值,但不能保存int的变量值,需要强转
- byte和short类型在进行运算时,当做int类型处理。
public class TypeForceConvertDemo {
public static void main(String[] args) { //输入快捷键 ctrl + ], 能定位对应的}
int num1 = (int)1.99; //强制 double -> int 赋给 num1
System.out.println("num1=" + num1); //1, 会直接将小数部分拿掉
int num2 = 11100;
byte b1 = (byte)num2; // -128 --- 127
System.out.println("b1=" + b1);
//强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
int num3 = (int)(10 * 3.5 + 6 * 1.5); // 先计算 double -> 转成 int -> 赋给 num3
System.out.println("num3=" + num3);
//当把一个常量值 , 赋给一个变量时,编译器先判断数据的范围是否超过char的范围
//,如果没有超过,则接受, 如果超过,则报错
char c1 = 1; // int -> char[为什么可以]
int num4 = 1;
//如果把一个变量赋给另外一个变量,则直接判断精度大小
//char c2 = num4; //int -> char [不可以]
char c3 = (char)num4; //int -> char -> 再赋给char [可以]
//强调:当我们进行强制转换时,这个结果是强制转换后的类型,但是并不影响被强制转换的变量的类型
char c4 = (char)num4; // num4仍然是int
}
}
本文介绍了Java中的变量概念、使用方法和注意事项。详细阐述了变量的声明、赋值和不同数据类型,包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。讨论了变量的存储和作用域,强调了变量的声明必须先于使用,并解释了自动类型转换和强制类型转换的规则。"
133150485,19694686,Python装饰器实现运行时安全检测,"['Python', '开发语言', '安全']
997

被折叠的 条评论
为什么被折叠?



