是不是刚学 Java 的小伙伴,一碰到变量和数据类型就头疼?定义个变量总提示 “类型不匹配”,用 JDK17 写代码时还会遇到一些旧版本没有的问题,比如 var 关键字不会用,数字分隔符不知道怎么加。新手学 Java,变量和数据类型是第一道坎,这关过不好,后面的循环、方法更没法学。今天兔子哥就针对 JDK17,把变量和数据类型讲透,从定义到使用,再到新版本的新特性,附实战案例和易错点解析,跟着学,你也能轻松搞定 Java 的 “基础积木”!
基础问题:变量和数据类型到底是啥?为啥这么重要?
可能有朋友会问:“不就是存个数据吗?为啥搞得这么复杂?” 其实变量就像我们生活中的容器,数据类型就是容器的规格 —— 有的容器装整数,有的装小数,有的装文字,装错了就会出问题。JDK17 虽然对变量和数据类型做了些优化,但核心规则没变,学好它们是写对 Java 代码的第一步。
网友 “JDK17 新手小郑” 说:“之前用旧版本写变量,换成 JDK17 后总用不好 var,后来才知道它能自动推断类型,省了不少事!” 确实,JDK17 在变量定义上更灵活,但基础的类型规则还是得掌握,不然灵活变混乱。
变量:JDK17 里怎么定义?这些规则别违反
变量是存储数据的 “盒子”,在 JDK17 里定义变量有几种方式,新手要分清用法,别混用。
1. 显式声明类型:最常用也最稳妥
java
// 格式:数据类型 变量名 = 初始值;int age = 20; // 整数类型double height = 1.75; // 小数类型String name = "张三"; // 字符串类型boolean isStudent = true; // 布尔类型这种方式要明确写数据类型,适合新手,不容易出错。比如 age 存年龄,用 int 类型;height 存身高,用 double 类型,一目了然。JDK17 和旧版本在这方面没区别,放心用。
2. var 关键字:JDK10 + 新增,自动推断类型
JDK17 里可以用 var 定义变量,不用写类型,编译器会自动推断:
java
var score = 95; // 自动推断为int类型var weight = 65.5; // 自动推断为double类型var message = "Hello JDK17"; // 自动推断为String类型注意:var 定义的变量必须马上赋值,不然编译器没法推断类型。比如
var num;会直接报错,这是新手常犯的错。而且 var 不能用于类的成员变量,只能在方法里用,别瞎用。3. 常量:用 final 修饰,值不能改
java
final int MAX_SCORE = 100; // 常量,值不能改// MAX_SCORE = 90; // 报错!常量不能重新赋值常量名一般全大写,用下划线分隔,比如 MAX_SCORE。JDK17 里常量的用法和旧版本一样,适合存固定不变的值,比如满分、π 值等。
| 变量类型 | 定义方式 | JDK17 新特性 | 新手易错点 |
|---|---|---|---|
| 普通变量 | 类型 名 = 值 | 无 | 类型和值不匹配 |
| var 变量 | var 名 = 值 | 自动推断类型 | 没赋值就定义 |
| 常量 | final 类型 名 = 值 | 无 | 试图修改常量值 |
兔子哥提示:刚开始学建议先用显式声明类型,等熟悉后再用 var,不然容易搞混类型,排查错误更麻烦。
数据类型:JDK17 里有哪些?怎么用才对?
Java 的数据类型分两大类:基本类型和引用类型。基本类型是 “值类型”,直接存数据;引用类型是 “地址类型”,存的是对象地址,新手先掌握基本类型。
1. 整数类型:存不带小数点的数
JDK17 里整数类型有 byte、short、int、long,最常用的是 int 和 long:
java
int num1 = 100; // 范围:-20亿到20亿左右long num2 = 10000000000L; // 超过int范围的数要加L(大小写都行)易错点:给 long 赋值时,数字超过 int 范围必须加 L,不然会报错。比如
long num = 20000000000;会报错,必须写成20000000000L。2. 浮点类型:存带小数点的数
常用 float 和 double,double 精度更高,用得更多:
java
double pi = 3.1415926; // 双精度,常用float f = 3.14F; // 单精度,必须加FJDK17 支持数字分隔符,大数字可以用下划线分开,更易读:
java
double salary = 100_000.50; // 相当于100000.50,下划线不影响值long population = 1_400_000_000; // 方便看出是14亿这个新特性超实用,写大数字时别忘用,老师看了都夸规范。
3. 字符类型:存单个字符
用 char 表示,用单引号括起来:
java
char c1 = 'A'; // 字母char c2 = '中'; // 汉字,Java支持Unicode字符char c3 = '\u0041'; // Unicode编码,相当于'A'注意:char 只能存单个字符,存字符串要用 String(引用类型),比如
char str = "A";会报错,必须用String str = "A";。4. 布尔类型:存 true 或 false
只有 boolean 一种,用于判断:
java
boolean isPass = true;boolean hasError = false;别用 0 或 1 代替 true 和 false,Java 里不允许,这和 C 语言不一样,新手别搞混。
实战案例:JDK17 变量与数据类型综合练习
咱们写个小程序,用 JDK17 的特性定义变量,计算学生的平均分,巩固学到的知识:
java
public class VariableDemo {public static void main(String[] args) {// 用显式类型定义学生信息String studentName = "李四";int mathScore = 92;int englishScore = 88;// 用var定义变量var totalScore = mathScore + englishScore;var average = totalScore / 2.0; // 自动推断为double// 用数字分隔符定义常量final int SUBJECT_COUNT = 2;// 输出结果System.out.println(studentName + "的总成绩:" + totalScore);System.out.println("平均分:" + average);System.out.println("科目数量:" + SUBJECT_COUNT);}}运行这段代码会输出:
李四的总成绩:180
平均分:90.0
科目数量:2
代码解析:这里用了显式类型、var 变量、常量和数字分隔符,都是 JDK17 里常用的写法。计算平均分用 2.0 而不是 2,是为了得到小数结果,不然会做整数除法,这点新手要注意。
自问自答:JDK17 变量与数据类型常见问题
var 变量这么方便,是不是可以全用 var 代替显式类型?
不建议!var 虽然方便,但会降低代码可读性。比如
var data = getResult();别人不知道 data 是整数还是字符串,显式类型int data = getResult();一眼就明白。团队开发时尽量少用 var,除非变量类型很明显。JDK17 的数字分隔符可以随便加吗?
不行!分隔符只能加在数字中间,不能在开头、结尾或小数点旁边。比如
100_00可以,_100、100_、10_.5都不行,会报错。整数类型里,byte 和 short 很少用,为啥还要学?
byte 和 short 占内存小,在处理大量数据时有用,比如存储图片像素、传感器数据等。但新手日常练习用 int 就够了,别纠结,先掌握常用的。
最后说点实在话
变量和数据类型是 Java 的基础,就像盖房子的砖块,砖块质量不好,房子肯定不结实。JDK17 虽然加了 var 和数字分隔符这些新特性,但核心的类型规则没变,新手要先搞懂基本类型的用法,再学新特性,别本末倒置。
写代码时多注意类型匹配,比如整数别用 double 存,字符串别用 char 存,这些小细节最容易出错。遇到报错别慌,大部分是类型不匹配或赋值错误,看看错误提示,对照教程改一改,很快就能解决。
建议大家多写小例子练习,比如定义不同类型的变量,做简单的计算,熟悉每种类型的用法和限制。用熟了之后,你会发现变量和数据类型其实不难,而且 JDK17 的新特性确实能让代码更简洁。打好这个基础,后面学循环、方法会轻松很多,加油吧,新手朋友们!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
评论列表
JDK17 Java基础:变量与数据类型详解,初学者好帮手。