资讯动态

零基础学Java第三篇:数据类型、变量、运算符与流程控制

发布时间:2026/10/3 4:00:20 来源:尧图企业网站定制
零基础学Java这个系列写到第三篇前两篇我们把两件最磨人的事解决了JDK装好、环境变量配好然后用IDE跑通了第一个HelloWorld。很多零基础的朋友就是卡在这一步——环境装好了代码能跑了但接下来不知道学什么。这篇03就进入Java真正开始写逻辑的部分数据类型、变量、运算符和流程控制。这四个东西是Java所有代码的砖块和水泥学完这一篇你就能看懂别人写的简单业务代码也能自己写出带判断和循环的小程序了。我尽量按零基础能听懂的方式讲每个概念都配上人话解释 代码示例 面试角度一步到位。1. 为什么第三篇必须落在数据类型与变量上1.1 前两篇的坑位这篇开始填如果你跟着01、02走下来这时候你已经有了一台能编译运行Java的电脑也见过main方法长什么样。但HelloWorld那种代码说白了就是印了一行字你还没有真正理解程序是怎么处理数据的。我见过太多零基础的朋友学完HelloWorld就直接跑去看Spring Boot、看MyBatis结果回来连int和Integer都分不清。这不是学习态度的问题是学习顺序的问题。Java是一门静态强类型语言意思是每个变量在编译期就必须确定类型类型一旦定下来该占多少内存、能做什么运算、能调什么方法全都由这个类型决定。所以不把数据类型吃透后面看任何代码都像是看天书——你知道它大概在做什么但不知道为什么能这么做。在Java里面int a 10;这一行就干了三件事声明一个叫a的变量、指定它的类型是int、给它的内存位置放入数值10。变量本质是内存里一个有名字的容器类型决定了这个容器多大、能装什么。这个理解起来其实不难难的是八个基本类型各有各的脾气。1.2 零基础阶段的顺序感比努力更重要我自己带过几个零基础转行的朋友也看过很多自学路上的帖子发现一个规律能坚持学下来的人基本都遵循了数据 → 运算 → 逻辑 → 对象这个节奏。数据是变量和类型运算是各种运算符逻辑是if和循环对象才是面向对象那一大堆。前两步大概花一周第三天开始接触Scanner输入、写小游戏你的反馈感就来了不会觉得编程枯燥。如果你问我这篇的优先级我建议今天就把文章里的代码全部手敲一遍不要复制粘贴。手敲的意义不是练习打字而是让你的手指和眼睛一起熟悉英文关键字、括号、分号这些代码肌肉记忆。很多人看懂了但写不出来就是因为输入量太少。2. 数据类型、变量和运算符从代码到内存建立直觉2.1 八个基本数据类型一张表记住它们Java的基本数据类型一共八种记住一个口诀四整、两浮、一字符、一布尔。类型占用字节取值范围默认值典型用途byte1-128 ~ 1270文件流、二进制数据处理short2-32768 ~ 327670少见主要是兼容老代码int4约 -21亿 ~ 21亿0最常用的整数类型long8极大约 922亿亿0L时间戳、大数值计算float4约 ±3.4E380.0f精度要求低的浮点数double8约 ±1.8E3080.0d默认的浮点类型char20 ~ 65535\u0000单个字符boolean1true / falsefalse判断条件注意Java里long类型的赋值必须在数字后面加Lfloat必须加F。不加后缀编译器会直接把字面量当成int和double处理超出范围就报错。我特别想强调int的边界问题。很多零基础同学写累加器int sum 0;然后一直加一直加加到一定数量突然出现负数一脸懵。这不是你的逻辑错了是int溢出了数值超过21亿之后会从最小值重新绕回去。业务开发中凡是涉及金额、数量的累加要么先评估会不会超范围要么直接用long。面试时问int能存多大的数没有任何一个负责任的面试官希望你就背个21亿他希望你能说出溢出会怎样、怎么预防。2.2 类型转换自动转与强制转的边界Java的类型转换分两种自动转换和强制转换。自动转换发生在小类型转向大类型时比如int a 100; long b a; // int - long自动转 double c b; // long - double自动转 float d c; // 这个不报错因为double - float是缩窄其实有精度损失反过来的方向必须手动强转double price 99.99; int p (int) price; // 结果是99小数部分被直接丢掉不是四舍五入强转这个操作零基础阶段最容易踩的坑就是精度丢得莫名其妙。(int) 3.99得到的是3不是4它是直接截断不是四舍五入。如果你要四舍五入用Math.round(3.99)返回long。还有更隐蔽的int强转成byte如果数值超过127结果会变成负数因为高位被砍掉了。这类问题在面试题里特别常见考的就是你对内存模型的理解。再补一个很多人不知道的char也是一种整数类型。char c A;里面存的其实是65。所以char c 65;打出来也是Ac 1结果是66。这在做字符统计、加密的时候非常常用。2.3 变量的命名规范与作用域Java的标识符命名规则我在这一节直接给你说全只能包含字母、数字、下划线_、美元符号$不能以数字开头不能使用Java保留关键字class、int、if等都不能当变量名区分大小写name和Name是两个不同变量类名用大驼峰HelloWorld、变量名和方法名用小驼峰userName、常量全大写加下划线MAX_COUNT作用域这块零基础最容易犯的错是在循环外面访问循环变量。比如for (int i 0; i 10; i) { // ... } System.out.println(i); // 编译报错找不到符号i只在for循环的花括号内有效出了这个作用域就销毁了。变量的生命周期和你的花括号严格对应这一条可以解释大部分找不到符号的报错。2.4 运算符优先级写代码时不要挑战它Java的运算符优先级我建议零基础只记住一个核心优先级口诀括号最大、单目第二、算术第三、关系第四、逻辑第五、赋值最后。真正写代码的时候与其背一张复杂的优先级表不如直接用括号把你想表达的顺序框起来。这不是示弱而是给看代码的人减负。实际工作中我见过一个高频bug判断条件里同时出现和比如下面这种// 判断 status 是否等于 3 且 flag 为 true if (status 3 2) { // 这个写法会出问题 }的优先级高于所以status (3 2)先算了3 2结果是false然后拿status和一个布尔值做位运算直接编译报错。这种代码看半天也不知道哪里错了。我的建议条件判断全部用和||不要用和|。因为是短路运算左边为false就不会计算右边效率高语义也符合人的直觉。再说两个零基础必须练熟的运算符和--。int i 5; int a i; // a5i6先取旧值再自增 int b i; // i7b7先自增再取新值这个知识点是面试基础题的重灾区。你自己写代码时除非是标准的for循环否则不建议把揉进复杂的表达式里比如foo(i i)这种可读性差行为还可能在不同编译器下有细微差异。自增自减尽量独立成一行是减少bug的土办法。3. 流程控制让程序开始学会思考3.1 if-else分支不是判断那么简单的有了变量和运算符接下来你写的程序就能做决定了。最基础的流程控制就是if-else。零基础学if的时候我说一个容易忽略的点else匹配的是最近的if。if (score 90) System.out.println(优秀); if (score 60) System.out.println(及格); else System.out.println(不及格);这个代码乍看没问题但实际逻辑是第一个if独立第二个if和else配对。当score95时会同时打印优秀和及格因为第一个if没有被else约束。这种悬空else问题靠缩进是发现不了的唯一的解决方案就是不管多短都加上花括号。我见过不少老手也在这个地方翻过车别觉得自己基础好就不写{}。switch的情况在Java 12之后有大变化。旧版switch只能匹配整数类型、char、String和枚举一个case没写break就会穿透下去零基础写的时候特别容易漏break。新版支持箭头语法switch (day) { case 1, 2, 3, 4, 5 - System.out.println(工作日); case 6, 7 - System.out.println(周末); default - System.out.println(输入不合法); }新版不再需要break可读性高很多。如果你是零基础起步直接学新的箭头语法旧版那种穿透写法知道即可面试官问你就说能防穿透。3.2 三种循环场景选择要记牢Java的循环有三种写法for、while、do-while。零基础阶段我建议你记住这个决策逻辑明确知道循环几次 → 用for不知道几次只知道满足什么条件继续 → 用while至少要先执行一次再判断条件 → 用do-while这个用得很少但面试爱考区别for循环的本质是把初始化、条件、步进放在一行方便集中管理。while则更像你在说只要这个成立就一直做。do-while和while的唯一区别就是顺序do-while先干一次再判断所以无论条件是否成立它都至少执行一次。循环里还要掌握break和continue。break是跳出整个循环continue是跳过这一次、进入下一次。这两个词的含义建议你通过实际打印体会一下比如打印1到10遇到7就continue看看结果遇到7就break再看看结果。这种动手实验比看十遍教程都管用。3.3 实战案例猜数字游戏把前面学的全串起来学编程最怕的是知道概念不会用。所以我每篇都会放一个能串联知识点的小案例。这一篇我们写一个经典的猜数字游戏程序随机生成一个1~100之间的整数用户从键盘输入猜测值程序提示大了或小了直到猜中为止。import java.util.Random; import java.util.Scanner; public class GuessNumber { public static void main(String[] args) { Random random new Random(); Scanner scanner new Scanner(System.in); int target random.nextInt(100) 1; // 生成 1~100 的随机数 int guessCount 0; System.out.println(我心里想了一个 1~100 的数你来猜猜看); while (true) { int guess scanner.nextInt(); guessCount; if (guess target) { System.out.println(大了再试一次); } else if (guess target) { System.out.println(小了再试一次); } else { System.out.println(猜对了你一共猜了 guessCount 次。); break; } } scanner.close(); } }这段代码里你会用到import引入类、变量声明和赋值、Random生成随机数、Scanner读取输入、while死循环、if-else条件判断、break跳出循环、字符串拼接输出。一篇学的语法全部用上了。我强烈建议你把这代码拷到IDE里跑一遍然后改造几个地方限定最多猜7次提示用到if (guessCount 7)、猜完提示重新开始的选项、把随机数范围改成可变参数。每改一个小需求你的熟练度就上一个台阶。等你改了三次还想改第四次恭喜你你已经找到编程的感觉了。另一个我特别推荐的练手题是打印九九乘法表用嵌套for循环。别小看这个题它能同时练到双层循环、\t制表符、字符串格式化和循环变量的边界。我当年面试实习岗位上机题就是它十五分钟内没写出来会被直接刷掉。4. 高频面试题与常见错误排查实录4.1 零基础编译报错速查表写代码不报错是不可能的零基础阶段你遇到的报错80%是以下几类。把这张表存下来报错时对照排查比问AI快得多。报错提示含义常见原因找不到符号变量/方法名写错或不在作用域拼写错、作用域外使用、没导入类类型不兼容类型转换出了问题把字符串赋给int、double赋给int未强转到达不结束的语句程序无法继续执行循环条件恒为true且没有break越界异常运行时报错数组或集合下标超出范围下标从0开始你用了等于长度的下标非法字符编译不过且提示位置诡异全角中文标点尤其是分号这里重点聊一下找不到符号。这个报错对初学者极其不友好因为它可能出现在任何一行。我的排查套路是三步一看拼写二看作用域三看导入。先确认单词拼对了没再看这个变量是不是在它所在的花括号里声明最后看是不是用了其他包里的类却忘了import。绝大多数情况下都是这三个原因。用了IDE之后这个报错会变成红色波浪线鼠标悬停就能看到更具体的提示比命令行友好太多。4.2 三组高频面试题现在就要吃透虽然你还在入门阶段但既然热词里有Java面试题那就从现在开始用面试标准要求自己。零基础最常遇见的三个考点第一int和Integer有什么区别简单说int是基本类型Integer是它的包装类Integer可以赋nullint不行。自动装箱拆箱Integer的缓存范围是-128~127。这个知识点现在不用抠太深但概念要记住包装类是用来让基本类型能进入集合和泛型的。第二和equals的区别是什么对基本类型比较值对引用类型比较内存地址equals没重写时也等于但String重写了equals所以比较字符串内容用equals。这也是零基础特别容易踩的坑比如String s1 abc; String s2 abc; System.out.println(s1 s2); // true因为常量池复用 String s3 new String(abc); System.out.println(s1 s3); // falses3是新对象 System.out.println(s1.equals(s3)); // true第三连接字符串和StringBuilder谁快答案是StringBuilder快因为字符串是不可变的每次都会创建新对象。这个先记住结论原理后面学数组和对象时我再展开。4.3 断点调试比System.out.println强十倍的排错法零基础写代码排错大部分人会疯狂加System.out.println打印一堆程序走到这里了之类的日志。这个方法不是不行但效率很低。我建议从入门就养成用IDE断点调试的习惯。以IDEA为例在代码行号旁边点一下出现红点就是断点。点右上角的虫子图标以Debug模式运行程序会在红点处停下来你可以看到左侧所有变量的当前值。然后按F8单步执行一行一行看程序怎么走按F9跳到下一个断点。这个过程本质上就是让程序把它的执行轨迹给你看。猜数字游戏那个案例你完全可以把断点打在if (guess target)这一行跑一次Debug你会突然明白if到底是怎么工作的。这个习惯越早养越好等以后处理复杂业务时调试能力就是你的核心竞争力之一。5. 给零基础的学习节奏建议与避坑心得5.1 一周复习计划照着做就行很多零基础的人不是不努力是努力得太乱。学完一篇建议按下面的计划巩固这一周第一天把本文所有代码手敲一遍确保能跑通第二天不看代码自己从空白文件写出猜数字游戏第三天改需求比如加猜的次数限制和游戏结束问是否重玩第四天写九九乘法表、求100以内偶数和等小练习第五天整理自己的笔记把8个基本数据类型、类型转换规则、运算符优先级、三种循环写成一页纸第六天去刷两三道入门算法题比如蓝桥杯的基础题不求多求理解第七天休息一天或者回头把本系列01、02的坑补一补这个计划的逻辑很简单第一天照搬第二天默写第三天改造第四天扩展第五天总结第六天换场景。照搬和默写是输入改造和扩展是输出总结是内化换场景是迁移。五步走下来比你干巴巴看十个小时视频有用得多。5.2 工具选型的个人建议JDK安装和环境变量配置在01里已经说过了这里不重复。我想补充的是两个零基础会纠结的问题第一个用IDEA还是用Eclipse我个人建议直接上IntelliJ IDEA社区版免费、对零基础友好、提示智能。Eclipse也不是不行但IDEA的智能提示能帮你减少非常多在拼写和导入上的报错学习体验完全不一样。工具的目的是减少认知负担不是给你增加负担。第二个要不要记API文档Java的标准库很庞大String下面的方法就有几十个Math、ArrayList这些类也存在大量方法。零基础阶段不用背用的时候查文档查几次自然就记住了。我唯一建议背诵的是String、Math、Arrays这3个高频工具类的常用方法因为它们的实用性覆盖了绝大多数练习场景。5.3 我想专门写给自学者的话零基础学Java最大的敌人不是难度而是没有反馈感。你学了三天数据类型和运算符身边没人告诉你学得对不对就会开始怀疑自己。我的建议是每学一个知识点就设计一个让自己有反应的程序。比如学完Scanner就写一个输入自己的名字程序向你问好学完循环就写一个输入一个数判断是否是质数。这种程序跑成功后屏幕上的输出就是你的正反馈。如果你在学完这篇之后能独立完成猜数字游戏并且清楚地给别人讲清楚什么是int、什么是for循环、和equals为什么不同那恭喜你你已经正式迈过了Java的第一道门槛。下一篇04我会讲数组和字符串的底层原理这是面试开始深入的分水岭。你在练习过程中遇到的任何报错和问题建议先试着自己排查、然后再去网上搜这样印象最深。这套踩坑-排查-解决的流程本身就是程序员最重要的基本功。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑