目录
一、字面常量:程序里的“固定值”
字面常量的分类(结合代码示例)
二、数据类型:Java里的“数据身份证”
1. 基本数据类型(4大类8种)
2. 引用数据类型
什么是字节?
三、变量:会“变”的数据容器
1. 变量概念
2. 语法格式
3. 代码示例(定义+使用变量)
4. 注意事项(划重点!)
四、各类型变量详解(附注意事项)
1. 长整型变量(long)
2. 短整型变量(short)
3. 字节型变量(byte)
4. 浮点型变量(重点!)
(1)双精度浮点型(double)
(2)单精度浮点型(float)
5. 字符型变量(char)
6. 布尔型变量(boolean)
五、类型转换:小类型→大类型,大类型→小类型
1. 自动类型转换(隐式转换)
2. 强制类型转换(显式转换)
3. 类型提升(混合运算时)
(1)int和 long之间:int会被提升为 long
(2)byte和 byte的运算
六、字符串类型(String):不是基本类型!
1. 字符串拼接
2. 字符串与整型转换
(1)int转 String
(2)String转 int
总结:一张图理清数据类型和变量(背下来!!!)
作为刚入门Java的小白,最近在学习数据类型和变量这块,整理了这篇笔记,把图片里的重点都汇总了,希望能帮到同样在打基础的你~
一、字面常量:程序里的“固定值”
上节课的Hello World程序中,System.out.println("Hello World");输出的"Hello World"就是字面常量。常量就是程序运行期间固定不变的数据,比如:一周7天、一年12个月。
字面常量的分类(结合代码示例)
public class Demo { public static void main(String[] args){ System.out.println("hello world!"); // 字符串常量 System.out.println(100); // 整型常量 System.out.println(3.14); // 浮点数常量 System.out.println('A'); // 字符常量 System.out.println(true); // 布尔常量 System.out.println(false); // 布尔常量 } }字符串常量:由
""括起来,比如"12345"、"hello"、"你好"。整型常量:直接写的数字(无小数点),比如
100、1000。浮点数常量:直接写的小数,比如
3.14、0.49。字符常量:单引号括起来的单个字符,比如
'A'、'1'。布尔常量:只有
true和false。空常量:
null(后面讲)。
⚠️ 注意:字符串、整型、浮点型、字符型、布尔型,在Java中都称为数据类型。
二、数据类型:Java里的“数据身份证”
Java中数据类型分为两类:基本数据类型和引用数据类型。
我这里给大家一个手写的思维导图(牢牢记在脑子中噢):
1. 基本数据类型(4大类8种)
⚠️ 注意:
不论16位还是32位系统,
int占4字节,long占8字节。整型和浮点型都是带符号的。
整型默认是
int,浮点型默认是double。字符串属于引用类型(后面介绍)。
2. 引用数据类型
包括:String(字符串类型)、类、接口、枚举、抽象类……
什么是字节?
字节是计算机中表示空间大小的基本单位。
计算机使用二进制表示数据。我们认为 8 个二进制位(bit) 为一个字节(Byte)。
我们平时的计算机为 8GB 内存,意思是 8G 个字节。
其中 1KB = 1024 Byte,1MB = 1024 KB,1GB = 1024 MB。
所以 8GB 相当于 80 多亿个字节。
三、变量:会“变”的数据容器
1. 变量概念
程序中,除了固定常量外,经常改变的内容称为变量。比如:人的年龄、身高、成绩分数、数学函数的计算结果等。数据类型用来定义不同类型的变量。
2. 语法格式
数据类型 变量名 = 初始值;3. 代码示例(定义+使用变量)
int a = 10; // 定义整型变量a,初始值10 double d = 3.14; // 定义浮点型变量d,初始值3.14 char c = 'A'; // 定义字符型变量c,初始值'A' boolean b = true;// 定义布尔型变量b,初始值true System.out.println(a); System.out.println(d); System.out.println(c); System.out.println(b); a = 100; // 变量a的值可以修改 System.out.println(a); // 一行定义多个同类型变量 int a1 = 10, a2 = 20, a3 = 30; System.out.println(a1); System.out.println(a2); System.out.println(a3);4. 注意事项(划重点!)
int不论何种系统都是4个字节。推荐定义时赋初始值;若没合适初始值,可设为
0。赋值不能超过变量类型范围,否则溢出。
变量使用之前必须初始化,否则编译报错。
int的包装类型为Integer。
⚠️ 强提醒:在Java中,变量定义后,使用前必须已经初始化!
四、各类型变量详解(附注意事项)
1. 长整型变量(long)
int a = 10; long b = 10L; // 建议加L或l,否则默认是int long c = 100; // 也可以,但超过int范围会报错 long d = 101l; // 一般加L,小写l易和1混淆⚠️ 注意事项:
长整型初始值后加
L或l,推荐加L。长整型任何系统下都占8字节。
范围:
-2^63 ~ (2^63)-1。long的包装类型为Long。
2. 短整型变量(short)
public static void main(String[] args) { short a = 10; System.out.println(a); System.out.println(Short.MIN_VALUE); System.out.println(Short.MAX_VALUE); }⚠️ 注意事项:
short任何系统下都占2字节。范围:
-32768 ~ 32767。使用时注意不要超过范围(一般很少用)。
包装类型为
Short。
3. 字节型变量(byte)
byte b = 10; System.out.println(b); System.out.println(Byte.MIN_VALUE); System.out.println(Byte.MAX_VALUE);⚠️ 注意事项:
byte任何系统下都占1字节。范围:
-128 ~ 127。包装类型为
Byte。
💡 思考:byte、short、int、long都能定义整型变量,为什么分4种?
(答案:为了节省内存,byte存小整数,long存大整数,按需选择)
4. 浮点型变量(重点!)
(1)双精度浮点型(double)
double d = 3.14; System.out.println(d);⚠️ 神奇代码一:
int a = 1; int b = 2; System.out.println(a / b); // 输出0(int相除取整)⚠️ 神奇代码二:
double num = 1.1; System.out.println(num * num); // 输出1.2100000000000002(浮点数近似)(2)单精度浮点型(float)
float num = 1.8f; // 必须加f或F,否则默认是double System.out.println(num);⚠️ 注意事项:
double任何系统下都占8字节。浮点数与整数存储方式不同,不能单纯用形式计算(如
int/int是整数除法)。double遵守IEEE 754标准,是近似值,不是精确值。float占4字节,也遵守IEEE 754,工程中优先用double,float不推荐。float的包装类型为Float。
5. 字符型变量(char)
char c1 = 'A'; // 大写字母 char c2 = '1'; // 数字字符 char c3 = '中'; // 汉字 System.out.println(c1); System.out.println(c2); System.out.println(c3); // 注意:char只能用单引号,且只能放单个字符 char c4 = 'ab'; // 报错!⚠️ 注意事项:
Java中用单引号 + 单个字符表示字符面值。
计算机中字符本质是二进制,Java用Unicode表示(种类更多,包括中文)。
char的包装类型为Character。
6. 布尔型变量(boolean)
boolean b = true; System.out.println(b); b = false; System.out.println(b);⚠️ 注意事项:
只有
true和false两个值。Java的
boolean和int不能相互转换(不存在1=true、0=false的用法)。JVM没有明确规定
boolean占几个字节,通常用1字节(Oracle规范)。包装类型为
Boolean。
五、类型转换:小类型→大类型,大类型→小类型
Java是强类型语言,不同类型变量赋值时,会有严格的校验。
1. 自动类型转换(隐式转换)
特点:数据范围小的会自动转换为范围大的,编译时自动处理。
System.out.println((int)3.14); // 强制转为int,结果是3 System.out.println(3.14); // 默认是double int a = 10; long b = 100L; b = a; // int→long,自动转换 byte b1 = 10; byte b2 = 20; byte b3 = (byte)(b1 + b2); // 正确写法:先提升为int,再强转⚠️ 结论:byte和byte运算,会被提升为int再计算(因为CPU按4字节处理,byte/short先升为int)。
2. 强制类型转换(显式转换)
特点:数据范围大的转范围小的,需要手动加(类型),可能精度丢失。
int a = 1024; byte b = (byte)a; // 强转,可能溢出(1024超出byte范围) int a = 10; long b = 100L; a = (int)b; // long→int,强转 float f = 3.14f; double d = 5.12; d = f; // float→double,自动转换(小→大) f = (float)d; // double→float,强制转换(大→小) byte b1 = 10; // 10默认是int,但没超过byte范围,自动转换 byte b2 = (byte)257; // 257是int,强转后溢出(257-256=1)⚠️ 注意事项:
小范围类型赋值给大范围,自动转换。
大范围转小范围,必须强转,可能精度丢失。
字面量赋值时,Java会自动检查范围。
强转不一定成功,不相关的类型(如
int转boolean)不能互转。
3. 类型提升(混合运算时)
不同类型数据混合运算时,范围小的会提升到范围大的。
(1)int和long之间:int会被提升为long
int a = 10; long b = 20; int c = a + b; // 报错!a+b的结果是long,不能赋给int long d = a + b; // 正确,a提升为long,结果是long(2)byte和byte的运算
byte a = 10; byte b = 20; byte c = a + b; // 报错!a和b先提升为int,结果是int,不能赋给byte byte c = (byte)(a + b); // 正确,强转⚠️ 结论:byte和byte运算,先提升为int再计算,所以结果是int,需强转回byte。
六、字符串类型(String):不是基本类型!
Java中用String类定义字符串,属于引用类型。
1. 字符串拼接
public static void main(String[] args) { String s1 = "hello"; String s2 = "world"; System.out.println(s1); System.out.println(s2); System.out.println(s1 + s2); // 拼接成"helloworld" }2. 字符串与整型转换
(1)int转String
int num = 10; String str1 = num + ""; // 方法1:拼接空字符串 String str2 = String.valueOf(num); // 方法2:用valueOf(2)String转int
String str = "100"; int num = Integer.parseInt(str);⚠️ 注意:
String不是基本类型,是引用类型(String类)。整数变字符串:
num + ""或String.valueOf(num)。字符串转整数:
Integer.parseInt(str)。示例:
int a = 10; String s = a+""; System.out.println(s);会输出"10"。
(1):
(2):
总结:一张图理清数据类型和变量(背下来!!!)
数据类型:基本(4类8种)+ 引用(String、类、接口、枚举、抽象类……)
八种包装类除了int和char有特殊,其他都是首字母大写
变量:定义(
数据类型 变量名 = 初始值;)、初始化(必须!)、类型转换(自动/强制)、字符串操作
💡 学习小技巧:多敲代码,尤其是类型转换和变量初始化的例子,编译报错时看提示,很快就能掌握!
希望这篇笔记能帮你理清Java数据类型和变量的核心知识点~如果有疑问,欢迎留言讨论~