热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关键字、常量、变量、数据类型、标识符、类型转换(Java基础语法01)

内容介绍Java语言背景介绍【了解】Java开发环境搭建(必掌握[配置])JDK的下载和安装,环境变量的配置HelloWorld案例(必掌握[练习])【java开发的

内容介绍


  • Java语言背景介绍【了解】
  • Java开发环境搭建 (必掌握[配置]) JDK的下载和安装,环境变量的配置
  • HelloWorld案例 (必掌握[练习])【java开发的三个步骤】
  • 注释,关键字,常量,数据类型,变量,标识符 【Java的基本语法,重点】
  • 类型转换【难点】




学习目标

1. 能够说出Java语言的跨平台原理
2. 能够独立下载并安装JDK
3. 能够独立配置path环境变量
4. 能够独立编写HelloWorld案例并编译执行
5. 能够说出Java中的8种基本数据类型
6. 能够定义基本数据类型的变量并使用变量名输出
7. 能够说出标识符的命名规则
8. 能够说出基本数据类型之间相互转换的规则

具体内容


1. Java语言发展史


  • 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系统、物流系统) 【服务器端】

2. Java语言的跨平台原理【重要】★


  • 什么是跨平台?

平台&#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本身可以跨平台吗?

不可以。

在这里插入图片描述


3. JRE和JDK 【重要】


  • 什么是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

4. JDK的下载和安装 ★


  • A:JDK的下载

官网&#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包

  • 5分钟时间自己操作一遍

JDK的安装说明&#xff1a;注意目录要求&#xff01;

5. 常用的DOS命令


  • 为什么要学习命令提示符?
  • 如何打开命令提示符(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 -> 打开记事本

6. Path环境变量的配置 ★


  • 为什么要配置环境变量?
  • 如何配置?

总结:
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;

7. HelloWorld案例 ★


  • 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;

8. HelloWorld案例常见问题


  • 总结


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");}
}

9. Notepad&#43;&#43; 软件的安装和使用


  • Notepad软件安装后的设置

软件安装&#xff1a;傻瓜式的下一步下一步完成&#xff0c;建议安装目录与之前的JDK在同一级创建一个目录
设置 -> 首选项A. 新建 -> 默认语言Java -> 文件编码ANSIB. 自动完成问题&#xff1a;我们已经配置了环境变量&#xff0c;为什么在编译java文件的时候&#xff0c;还要进入指定位置&#xff1f;环境变量配置只是处理了 执行文件javac.exe和java.exe要编译哪个文件&#xff0c;是不是也要找到这个文件的位置&#xff01;

  • 5分钟时间安装并配置


10. 注释


  • 什么是注释?
  • 注释的分类?
  • 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;】

11. 关键字


  • 什么是关键字?
  • 关键字有哪些特征?

总结:
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;

12. 常量


  • 什么是常量?
  • 常量的分类有哪些?

我们编写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("北京市顺义区白各庄");}
}

13. Java中的数据类型 ★


  • 为什么要有数据类型?
  • 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类型

在这里插入图片描述


14. 变量 ★


  • 什么是变量?
  • 变量的格式是?
  • 变量的作用?

总结:
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);}
}

15. 变量的注意事项


  • 总结:

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类型

16. 标识符 ★


  • 什么是标识符?
  • 标识符的组成规则?

总结: 【学习标识符主要注意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;

17. 类型转换 ★


  • 类型转换的分类有?
  • (隐式)转换指的是?
  • (强制)转换指的是?

总结: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;

推荐阅读
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
author-avatar
狂风DKC想毕业321
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有