- Java语言背景介绍【了解】
- Java开发环境搭建 (必掌握[配置]) JDK的下载和安装,环境变量的配置
- HelloWorld案例 (必掌握[练习])【java开发的三个步骤】
- 注释,关键字,常量,数据类型,变量,标识符 【Java的基本语法,重点】
- 类型转换【难点】
1. 能够说出Java语言的跨平台原理
2. 能够独立下载并安装JDK
3. 能够独立配置path环境变量
4. 能够独立编写HelloWorld案例并编译执行
5. 能够说出Java中的8种基本数据类型
6. 能够定义基本数据类型的变量并使用变量名输出
7. 能够说出标识符的命名规则
8. 能够说出基本数据类型之间相互转换的规则
- Java语言是由谁, 在哪家公司开发的?
由詹姆斯高斯林在SUN公司开发出来的,后来SUN被Oracle公司收购!计算机语言:【计算机内部流通数据使用的语言】中国人使用的汉语,但是计算机它不能识别的,它有自己的语句,要想我们(人)的一些需求能够在计算机中得以实现,那么就必须使用计算机能够识别的语言(所有数据在计算机中存储的都是以0或者1来实现的),我们可以使用一些开发语言(C、C++、Java)来实现转换(计算机能够识别的二进制)
- Java语言的发展史?
Java语言从1994年开始研发,与次年(1995年)投入市场使用【发布的版本为1.0】。后续不断的进行更新(1.1,1.2,。。。)但是在1.5版本,由于更新力度比较大(具有里程碑意义!),更名为5.0。还有一个非常重要的版本8.0版本。我们采用的是8.0版本!【市场主流的版本】
- Java语言的平台划分?【了解即可】
Java分为三大块&#xff1a;JavaSE&#xff1a;它是整个Java语言的基石(它里面有Java的基本语法<这门语言的规则>)【桌面开发(坦克大战、斗地主、贪吃蛇)】JavaME&#xff1a;移动端开发(手机、平板)【塞班系统】JavaEE&#xff1a;企业级应用开发(互联网电商、OA系统、物流系统) 【服务器端】
- 什么是跨平台?
平台&#xff1a;操作系统windows系统、Mac os系统、Linux系统
- 跨平台的原理是?
借助不同版的jvm(虚拟机软件)&#xff0c;在不同的操作系统中运行&#xff01;要想java程序在window系统中运行&#xff0c;我们只需要下载windows版的jvm即可要想java程序在mac os系统中运行&#xff0c;我们只需要下载mac os版的jvm即可要想java程序在Linux系统中运行&#xff0c;我们只需要下载Linux版的jvm即可
- JVM本身可以跨平台吗?
不可以。
- 什么是JDK?
- 什么是JRE?
- 什么是JVM?
- 三者之间的关系是什么?
* JVM它是一款软件&#xff01;我们称之为虚拟机&#xff0c;就是我们编写的Java程序运行的位置。【java程序最终在jvm里面运行】其它&#xff0c;光有jvm是不够的&#xff01;实现一个庞大的功能&#xff0c;需要使用第三方提供的类(库) 【类是Java中的一个基本组织单位】* JRE它里面包含了 JVM 和一些核心的类库。 【java运行环境】运行环境&#xff1a;使用别人开发好的程序是可以的&#xff0c;但是不能自己开发。* JDK它里面包含了 jre 和 开发工具包(javac.exe和java.exe)结论&#xff1a;我们只要有jdk&#xff0c;就可以进行java开发了(啥都有了)* 三者的关系JDK>JRE>JVM
官网&#xff1a;http://www.oracle.com Oracle公司的官网会不断的更新主页面&#xff01;
B:JDK的安装
我们这里使用JDK8&#xff0c;安装是傻瓜式的(下一步&#xff0c;下一步&#xff01;) &#61;&#61;&#61;&#61;&#61;&#61;&#61;>>>安装路径不要有中文和特殊符号&#xff01;D&#xff1a;【不要是系统盘】Developjdk8NotePad&#43;&#43;...jdk8在安装的过程中&#xff0c;出现了一个界面 &#xff0c;千万不要关闭&#xff01; 按照它默认的路径安装即可&#xff01;&#xff01;&#xff01;&#xff01;
C:验证安装是否成功
进入安装JDK的bin目录&#xff0c;在当期目录的地址位置输入cmd回车&#xff0c;在弹出的DOS窗口里面分别输入javac回车和java回车&#xff0c;能够在屏幕看到一些内容&#xff0c;说明JDK安装成功&#xff01;
JDK目录结构说明
目录名称 说明
bin 该路径下存放了JDK的各种工具命令。javac和java就放在这个目录
------------------------------------------------------------------------
conf 该路径下存放了JDK的相关配置文件
include 该路径下存放了一些平台特定的头文件
jmods 该路径下存放了JDK的各种模块
legal 该路径下存放了JDK各模块的授权文档
lib 该路径下存放了JDK工具的一些补充JAR包
JDK的安装说明&#xff1a;注意目录要求&#xff01;
- 为什么要学习命令提示符?
- 如何打开命令提示符(DOS窗口)?
* 为什么要学习命令提示符?后面我们要使用javac.exe和java.exe开发工具&#xff0c;就必须进入指定的目录&#xff01;* 如何打开命令提示符(DOS窗口)?win&#43;r(一起按)&#xff0c; 输入框中输入 cmd&#xff0c;然后回车 * dos常用命令① 盘符切换&#xff1a; 直接输入盘符名称:&#43;回车 【盘符名称大小写均可】② 查看当前盘符(目录)里面的内容&#xff1a;dir③ 目录切换&#xff1a; cd 目录结构D:\Develop\jdk\jdk1.8.0_172\bin> 【你也可以一次进入一个目录&#xff0c;执行多次cd命令】④ 返回根目录&#xff1a;cd / 【可以从任意目录直接返回根目录】⑤ 返回上一级目录&#xff1a; cd ..⑥ 清屏目录&#xff1a; cls
在按下win&#43;r之后输入的&#xff1a;1. calc -> 打开计算器2. notepad -> 打开记事本
- 为什么要配置环境变量?
- 如何配置?
总结:
1. 为什么要配置环境变量&#xff1f; 正常情况&#xff0c;我们想要使用javac.exe和java.exe开发工具&#xff0c;必须进入指定的目录 D:\Develop\jdk\jdk1.8.0_172\bin为了方便开发&#xff0c;我们不希望每次都进入这个目录&#xff0c;那么可以通过环境变量的配置实现在任意目录都可以直接使用这2个开发工具。2. 如何配置&#xff1f;
配置环境过程中可能出现的问题&#xff1a;
1. 配置了环境变量&#xff0c;在DOS窗口执行javac命令不好使&#xff1f;可能是你在配置环境变量之前打开了窗口&#xff0c;关闭窗口重新打开一个&#xff01;2. 环境变量失效问题Win10, 重启电脑之后, 可能就会失效解决方案: 找到环境变量的path, 进入编辑文本, 不需要修改任何内容, 直接确定即可Win10的同学&#xff0c;建议将%JAVA_HOME%\bin 上移到顶端一个电脑可以安装多个版本的JDK&#xff0c;最终使用哪一个&#xff0c;取决于环境变量的配置&#xff01;
- Java程序开发运行的基本步骤是什么?
* 创建Java文件新建一个文本文档&#xff0c;修改扩展名为.java &#61;&#61;&#61;&#61;&#61;>>> HelloWorld.java* 编写java源代码 (程序员<人>能够看懂的)【机器不懂】以.java结尾的文件&#xff01; 【记事本中完成&#xff0c;电脑自带】* 编译java源代码&#xff0c;使其让计算机(jvm)能够识别的字节码文件以.class结尾的文件&#xff01; 【借助javac.exe工具】例如&#xff1a;javac HelloWorld.java* 运行字节码文件借助java.exe工具&#xff0c;运行程序&#xff01;例如&#xff1a;java HelloWorld
- HelloWorld的基本书写 (暂时记忆)
public class HelloWorld{public static void main(String[] args){System.out.print("Hello World!");}
}
- 编写前的注意事项
win10系统特别注意&#xff1a;系统默认是将所有文件的扩展名隐藏了&#xff0c;所以务必将文件的扩展名的复选框勾选【文件的扩展名就不会是。java,而是.txt】
- 10分钟时间练习
* 使用java程序&#xff0c;在屏幕上输出
你不努力&#xff0c;谁也给不了你想要的生活&#xff01;
将来的你一定感谢现在拼命的自己&#xff01;
- 总结
1.文件名与类名不一致【HelloWorld.java class Helloworld】
2.单词拼写错误 【void 写成了 viod或者 String写成了string】
3.main方法书写错误 将main写成了mian
4.类名(第三方类库)书写错误 【System写成了system】
5.代码结束未写分号
6.使用了中文的符号
说明&#xff1a;★ BUG&#xff1a;编写的程序存在问题&#xff0c;不能正常执行&#xff01;★ 以后我们写java代码&#xff0c;每行代码结束&#xff0c;都会以;为标记&#xff01; ★ 在书写代码的时候&#xff0c;我们输出中文&#xff0c;出现的结果不是预期的(没有报错)&#xff0c;可能是文件保存的时候使用的编码不正确&#xff01;★ 以后但凡更改了java源代码&#xff0c;那么之后都需要重新编译再执行&#xff01;★ println和print的区别&#xff1a;前者打印输出内容后&#xff0c;换行&#xff01;后者打印输出内容后&#xff0c;不换行&#xff01;
- 请找出下方HelloWorld案例的错误, 并修改
public class Demo { // 类名与文件名称不一致&#xff01;public static void main(String[] args) {System.out.println("HelloWorld");}
}
- Notepad软件安装后的设置
软件安装&#xff1a;傻瓜式的下一步下一步完成&#xff0c;建议安装目录与之前的JDK在同一级创建一个目录
设置 -> 首选项A. 新建 -> 默认语言Java -> 文件编码ANSIB. 自动完成问题&#xff1a;我们已经配置了环境变量&#xff0c;为什么在编译java文件的时候&#xff0c;还要进入指定位置&#xff1f;环境变量配置只是处理了 执行文件javac.exe和java.exe要编译哪个文件&#xff0c;是不是也要找到这个文件的位置&#xff01;
- 5分钟时间安装并配置
- 什么是注释?
- 注释的分类?
- HelloWorld说明
1. 什么是注释&#xff1f;对Java代码进行一些文字性的描述信息(解释代码是啥意思) 【注释是给人(程序员)看的】它是不参与程序执行的&#xff01;&#xff01;&#xff01;2. 注释的分类?单行注释&#xff1a; // 注释内容多行注释&#xff1a; /* 注释内容 */文档注释&#xff1a; /** 注释内容 */ 【了解】
/**这是一个文档注释&#xff1a;一般对类进行描述&#xff0c;我们使用文档注释这个类是我们的第一个Java程序&#xff01;class:它是一个关键字(稍后讲解)&#xff0c;它后面的内容就是一个类名HelloWorld&#xff1a;它是一个类名(类是java里面的基本组织单位&#xff0c;所有的代码都是写在类中的)
*/
public class HelloWorld{/*这是一个多行注释&#xff0c;注释的内容可以写在多行&#xff01;多行注释一般写在方法上面main&#xff1a;这是一个方法(它是Java程序运行的入口方法) 【固定写法】*/public static void main(String[] args){// 这是一个单行注释&#xff0c;注释的内容只能在当前行&#xff01;System.out.println("HelloWorld"); // 这是一条输出语句&#xff0c;输出完毕后会换行}
}
注意&#xff1a;注释的嵌套问题多行注释中不能嵌套多行注释&#xff01; 【在不清楚注释嵌套的情况下&#xff0c;就不要玩嵌套&#xff01;&#xff01;&#xff01;】
- 什么是关键字?
- 关键字有哪些特征?
总结:
1. 什么是关键字&#xff1f;在java中被赋予特殊含义的单词(被java语言内定了)&#xff01;&#61;&#61;&#61;&#61;&#61;&#61;>>>> 后面在定义变量(为变量取名)的时候不能使用这些关键字~例如&#xff1a;public class static void 具体什么含义&#xff0c;在后续课程会陆续学习&#xff01;2. 关键字的特征&#xff1f;【如何识别关键字】① 它都是由一些小写的单词组成&#xff01;(全部都是小写字母)② 在高级记事本中是高亮显示(有特殊)我们在后续会接触到很多关键字&#xff01;我们每接触一个&#xff0c;就掌握一个&#xff01;问题: main是关键字吗?它不是关键字&#xff01;但是它的确有特殊含义&#xff0c;主方法(程序入口方法)的单词是固定的&#xff01;
- 什么是常量?
- 常量的分类有哪些?
我们编写Java程序很多时候是需要描述一些事物的特征&#xff01;(描述某位同学<姓名、年龄、身高、性别>)而在这些数据中&#xff0c;性别是固定的(一旦出生后不可更改了)&#xff01;
总结:
1. 什么是常量&#xff1f;在java程序运行过程中&#xff0c;其数值不可改变的量&#xff01;2. 常量的分类&#xff1f;字符串常量&#xff1a;标志是一对双引号&#xff01;【双引号中间可以书写任意内容(不写也行)】"HelloWorld","么么哒&#xff01;","a","&#64;",""字符常量&#xff1a;标志是一对单引号&#xff01;【单引号中间不能空着不写,而且只能出现单个字符】&#39;a&#39;,&#39;1&#39;,&#39;国&#39;,&#39;&#64;&#39; 【‘’ 这是错误的&#xff01;】整数常量&#xff1a;全部都是数字&#xff0c;不能有小数点100&#xff0c;-58小数常量&#xff1a;全部都是数字&#xff0c;有小数点3.14&#xff0c;-10.5布尔常量&#xff1a;只有2个取值(true&#xff0c;false) 【"true" 错误&#xff0c;它是一个字符串常量】空常量&#xff1a;null(只有这么一个取值) 【面向对象章节会学习到】3. 注意问题① 字符串常量&#xff0c;里面可以空着不写任何内容② 字符常量&#xff0c;不能空着不写&#xff0c;不能写多个字符(单个字母&#xff0c;单个数字&#xff0c;单个汉字都是一个字符)③ 布尔常量&#xff0c;不能加双引号④ 空常量&#xff0c;不能直接打印输出
public class Demo01{public static void main(String[] args){// 字符串常量System.out.println("$");System.out.println("itheima");System.out.println("国");System.out.println("");// 字符常量System.out.println(&#39;a&#39;);System.out.println(&#39;1&#39;);System.out.println(&#39;&#64;&#39;);System.out.println(&#39;男&#39;);System.out.println(&#39; &#39;);// 下列三种字符常量对应代码都是错误的&#xff01;// System.out.println(&#39;abc&#39;);//System.out.println(&#39;10&#39;);//System.out.println(&#39;&#39;);// 整数常量System.out.println(100);System.out.println(-58);// 小数常量System.out.println(3.14);System.out.println(-10.5);// 布尔常量&#xff1a;只有2个取值System.out.println(true);System.out.println(false);// 空常量 【不能直接打印输出】//System.out.println(null);}
}
10分钟时间练习
请在屏幕上输出一个学生的信息&#xff0c;包含姓名、性别、年龄、身高、地址。
public class Demo02{public static void main(String[] args){// 姓名(字符串常量)System.out.println("虞姬");// 性别(字符常量)System.out.println(&#39;女&#39;);// 年龄(整数常量)System.out.println(18);// 身高(单位m&#xff0c;小数常量)System.out.println(1.65);//System.out.println(1.65&#43;"米");// 地址(字符串常量)System.out.println("北京市顺义区白各庄");}
}
- 为什么要有数据类型?
- Java的基本数据类型一共分为哪些?
总结:
1. 为什么要有数据类型&#xff1f;所有的数据都是要进行存储的&#xff01;数据类型的出现就是为了让JVM合理的为数据分配合适的空间&#xff01;★★★★★【我们写的java程序在JVM中运行&#xff0c;JVM它是一款软件&#xff0c;软件运行会消耗内存】int number &#61; 100; // int类型占据4个字节空间&#xff0c;数值100可以使用byte类型存储&#xff01;byte number &#61; 100; // byte类型只占据1个字节空间在计算机中&#xff0c;存储数据的最小单元是 bit(位)&#xff0c;存储的数据都是二进制(里面只有0和1)的&#xff0c;每1个0或者1就代表一个位。在计算集中&#xff0c;存储数据的最小单位是字节byte(每8个位就成为了1个字节)&#xff0c;而显示文件的大小通常是KB或者更高的单位。1byte &#61; 8bit1KB &#61; 1024 byte1MB &#61; 1024 KB1GB &#61; 1024 MB1TB &#61; 1024 GB在前面我们定义了字符串常量、布尔常量等等它在内存中都会占据空间2. 数据类型分类 【非常重要&#xff01;】★ 基本数据类型&#xff1a;四类八种 【今天的重点】整型&#xff1a;byte 1个字节short 2个字节 int 4个字节long 8个字节浮点型&#xff1a;float 4个字节double 8个字节字符型&#xff1a;char 2个字节布尔型&#xff1a;boolean 1个字节 ★ 引用数据类型&#xff1a;数组、类、接口 【后续课程陆续学习】字符&#39;国&#39;占据多少位&#xff1f;16位&#xff01; 【字符占据2个字节&#xff0c;每个字节8个位】注意&#xff1a;类型的取值范围与占据空间的大小无关的&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;byte类型的最大取值 127在没有特殊说明的情况下&#xff0c;整数默认的是int类型&#xff0c;浮点数默认的是double类型
- 什么是变量?
- 变量的格式是?
- 变量的作用?
总结:
1. 什么是变量&#xff1f;变量&#xff1a;在程序运行过程中&#xff0c;值可以改变的量&#xff0c;本质是内存中一块区域(java程序都是在内存中运行的&#xff01;)变量组成&#xff1a; 数据类型 变量名称 变量值 三部分构成&#xff01;2. 变量的定义格式格式1&#xff1a;先定义变量&#xff0c;后赋值数据类型 变量名称;变量名称 &#61; 变量值;例如&#xff1a; int number;number &#61; 100;格式2&#xff1a;在定义变量的同时&#xff0c;直接赋值数据类型 变量名称 &#61; 变量值;例如&#xff1a;int number &#61; 100;简而言之&#xff1a;byte/short/int/long/float/double/char/boolean a;a &#61; 值;【根据不同的类型赋不同的值】 byte/short/int/long/float/double/char/boolean a &#61; 值;【根据不同的类型赋不同的值】 3. 变量的使用获取变量的值&#xff1a;格式&#xff1a;变量 [可以进行输出]System.out.println(number);修改变量的值&#xff1a;格式&#xff1a;变量名称 &#61; 新的变量值;number &#61; 200;4. 变量的作用能够非常方便修改程序中那些需要变动的值&#xff01;System.out.println(true);System.out.println(true);System.out.println(true);System.out.println(true);System.out.println(true);上面使用常量&#xff0c;要修改需要全部挨个完成&#xff0c;如果使用变量会非常方便boolean flag &#61; true;System.out.println(flag);System.out.println(flag);System.out.println(flag);System.out.println(flag);System.out.println(flag);// 如果要将输出到数据弄成false使用变量&#xff0c;我们只需要将 flag &#61; false;// 代码演示&#xff1a;
public class VariableDemo{public static void main(String[] args){// 定义变量&#xff08;先定义后赋值&#xff09;boolean flag; // 定义变量&#xff0c;没有赋值的flag &#61; true; // 为变量赋值// 定义变量(在定义的同时直接赋值)char ch &#61; &#39;A&#39;;// 获取变量的值(打印输出)System.out.println(flag);System.out.println(ch);// 修改变量的值flag &#61; false;ch &#61; &#39;牛&#39;;System.out.println(flag);System.out.println(ch);}}
- 变量的扩展讲解:
1. 变量可以先定义, 再赋值.也可以在定义的时候直接赋值&#xff01;
2. 一条语句可以定义n个变量.【能看懂即可&#xff0c;一般开发不会使用&#xff0c;但是面试会出现&#xff01;】
public class VariableDemo2{public static void main(String[] args){ // 在一个语句中定义多个变量(未赋值)int x,y,z; // 一次性定义了3个变量&#xff0c;没有赋值// 为变量赋值x &#61; 10;y &#61; 20;z &#61; 30;// 使用变量System.out.println(x);System.out.println(y);System.out.println(z);System.out.println("-----------------");// 在一个语句中定义多个变量同时赋值int m&#61;10,n&#61;20,p&#61;30;// 使用变量System.out.println(m);System.out.println(n);System.out.println(p);}}
- 10分钟练习: 请分别定义byte、short、int、double、char以及boolean这6种类型的变量&#xff0c;并将值输出到屏幕上。
/**请分别定义byte、short、int、double、char以及boolean这6种类型的变量&#xff0c;并将值输出到屏幕上。
*/
public class VariableDemo3{public static void main(String[] args){// 定义byte类型的变量byte a &#61; 10;System.out.println(a);// 定义short类型的变量short b &#61; 20;System.out.println(b);// 定义int类型int c &#61; 30;System.out.println(c);// 定义double类型的变量double d &#61; 12.03;System.out.println(d);// 定义char类型的变量char e &#61; &#39;a&#39;;System.out.println(e);// 定义boolean类型的变量boolean f &#61; true; System.out.println(f);}
}
- 总结:
1. 定义变量的时候(定义在方法中)&#xff0c;需要先赋值&#xff0c;后使用 【定义在方法中变量我们称之为局部变量】public static void main(String[] args){// 定义变量int a; // 定义了变量&#xff0c;没有赋值System.out.println(a); // 错误: 可能尚未初始化变量a //【执行javac命令出现的错误&#xff0c;我们称之为编译报错&#xff1b;执行java命令报错&#xff0c;我们称之为运行时报错&#xff01;】}2. 变量在定义的时候&#xff0c;变量名称重复 public static void main(String[] args){// 定义变量int a; // 定义了变量&#xff0c;没有赋值char a &#61; &#39;a&#39;; // 在定义一个变量 (错误: 已在方法 main(String[])中定义了变量 a)&#xff0c;简而言之&#xff0c;变量名称不允许重复&#xff01;}3. 定义long类型的数据时&#xff0c;建议在后面添加一个L//long b &#61; 10000000; // 右侧是一个int类型的数值(整数默认是int类型&#xff0c;当前的数值没有超过int类型的最大取值)//long b &#61; 100000000000; // 右侧是一个int类型的数值(整数默认是int类型&#xff0c;当前数值超过了int类型的最大取值&#xff0c;所以会报错&#xff01;)long b &#61; 100000000000L; // 加了L说明数值是一个long类型的&#xff0c;没有超过long类型的最大取值&#xff0c;代码正确&#xff01;4. 定义float类型的数据&#xff0c;后面添加F//float d &#61; 3.15; // 小数默认是double,你将这个double类型的数值赋值给一个float类型的变量&#xff0c;出现了不兼容类型的错误 float d &#61; 3.15F; // 明确指定这个小数是一个float类型
- 什么是标识符?
- 标识符的组成规则?
总结: 【学习标识符主要注意2个问题&#xff1a;它的规则&#xff1f;能够识别标识符是否符合要求&#xff01;】
1. 什么是标识符&#xff1f;就是我们为 类名、变量名称、方法名称取名字&#xff01;都是自定义&#xff01;2. 标识符的组成只能是 数字(0-9)、字母(a-z或者A-Z)、下划线(_)、美元符号($)
标识符的命名规范
1. 硬性要求&#xff1a;★ 不能以数字开头★ 不能是关键字(关键字已经被内定了&#xff0c;赋予了特殊的含义&#xff01;)★ 严格区分大小写的★ 只能是 数字(0-9)、字母(a-z或者A-Z)、下划线(_)、美元符号($) 2. 江湖规矩(软性要求)★ 见名知意&#xff0c;别人一看到类名就知道这个类是干啥的&#xff0c;比如&#xff1a;public class Student{} &#61;&#61;&#61;&#61;>>> 这个类是用于描述学生信息的针对类名&#xff1a;大驼峰类名&#xff1a;描述朋友一个单词&#xff1a;单词的首字母大写&#xff0c;比如&#xff1a;Friend多个单词&#xff1a;每个单词的首字母都要大写&#xff1a;比如&#xff0c;男朋友 BoyFriend针对变量名称、方法名称&#xff1a;小驼峰变量/方法名称&#xff1a;一个单词&#xff1a;每个字母都是小写 int number &#61; 10;多个单词&#xff1a;第一个单词的首字母小写&#xff0c;其它的单词的首字母都大写 int oddNumber &#61; 9;
- 类型转换的分类有?
- (隐式)转换指的是?
- (强制)转换指的是?
总结:1. 类型转换分为 自动类型转换和强制类型转换2. 自动类型转换(我们不用手动处理)将小范围的数值赋值给大范围的变量&#xff01;只要遵循范围的规则&#xff1a;【类型转换都是数字型的&#xff01;布尔类型不参与类型转换&#xff01;】byte--->>short--->>>int--->>long--->>float--->>doublechar--->>>int--->>long--->>float--->>double例如&#xff1a;long number &#61; 100; // 将小范围的数值100(int类型)&#xff0c;赋值给大范围(long类型)的变量numberbyte b &#61; 100; // 代码也没有问题&#xff0c;比较特殊(还有short)&#xff0c;只要数值没有超过byte的最大取值范围即可&#xff01;3. 强制类型转换(手动处理)将大范围的数值赋值给小范围的变量处理的格式&#xff1a; 小范围数据类型 变量名称 &#61; (小范围的数据类型)大范围数值;例如&#xff1a;long c &#61; (long)3.15; // 小数默认是double类型&#xff0c;将大范围的数值赋值给小范围的变量&#xff0c;必须强转&#xff01;System.out.println(c); // 3 强制转换存在2个问题&#xff1a;丢失精度&#xff1a;大范围的浮点数转成小范围的整数long c &#61; (long)3.15; // 小数默认是double类型&#xff0c;将大范围的数值赋值给小范围的变量&#xff0c;必须强转&#xff01;System.out.println(c); // 3 数据溢出&#xff1a;大范围的整数转成小范围的整数 【有一个水桶&#xff0c;里面有10L水&#xff0c;然后倒入一个容量只有1L的水杯】byte d &#61; (byte)200L;System.out.println(d); // -56★ 强制类型转换风险极大&#xff0c;慎用&#xff01;&#xff01;&#xff01;
面试题&#xff1a;问题: 下面的程序是否有问题&#xff0c;如果有问题&#xff0c;请指出并说明理由(必须掌握!!!)
byte b1 &#61; 3;
byte b2 &#61; 4;
byte b3 &#61; b1 &#43; b2;
错误原因: 因为所有整数默认都是int类型, 所以b1和b2相加的时候, 会先将自己提升为int类型两个int相加的结果还是int, 将int结果赋值给byte, 必须加入强转
解决方案: byte b3 &#61; (byte)(b1 &#43; b2);
byte b &#61; 3 &#43; 4; // 这句话不会出现编译错误原因是3和4是两个常量, Java有常量优化机制, 在编译的时候就会将3和4计算出一个结果并自动判断结果是否在byte的取值范围内.
double d &#61; 20;System.out.println(d); // 没有&#xff0c;自动转换&#xff0c;结果为 20.0long l &#61; 10; System.out.println(l);long l2 &#61; 12345678998765432L;
题&#xff1a;
丢失精度&#xff1a;大范围的浮点数转成小范围的整数
long c &#61; (long)3.15; // 小数默认是double类型&#xff0c;将大范围的数值赋值给小范围的变量&#xff0c;必须强转&#xff01;
System.out.println©; // 3
数据溢出&#xff1a;大范围的整数转成小范围的整数 【有一个水桶&#xff0c;里面有10L水&#xff0c;然后倒入一个容量只有1L的水杯】
byte d &#61; (byte)200L;
System.out.println(d); // -56
★ 强制类型转换风险极大&#xff0c;慎用&#xff01;&#xff01;&#xff01;
> 面试题&#xff1a;问题: 下面的程序是否有问题&#xff0c;如果有问题&#xff0c;请指出并说明理由(必须掌握!!!!)
>
> byte b1 &#61; 3;
> byte b2 &#61; 4;
> byte b3 &#61; b1 &#43; b2;&#96;&#96;&#96;markdown
错误原因: 因为所有整数默认都是int类型, 所以b1和b2相加的时候, 会先将自己提升为int类型两个int相加的结果还是int, 将int结果赋值给byte, 必须加入强转
解决方案: byte b3 &#61; (byte)(b1 &#43; b2);
byte b &#61; 3 &#43; 4; // 这句话不会出现编译错误原因是3和4是两个常量, Java有常量优化机制, 在编译的时候就会将3和4计算出一个结果并自动判断结果是否在byte的取值范围内.
double d &#61; 20;System.out.println(d); // 没有&#xff0c;自动转换&#xff0c;结果为 20.0long l &#61; 10; System.out.println(l);long l2 &#61; 12345678998765432L;