Java基础教程-01-Java简介与

1. 计算机基本概念

1.1 计算机组成

计算机由计算机硬件和计算机软件组成.

  1. 计算机硬件: 你的眼睛能看的见, 你的手能摸得着的东西.
    1)中央处理器(CPU)
    • 由运算器和控制器组成.
    2)存储器
    • 内存: 内存条(代数, 睿频).
    • 外存: 硬盘(SSD: 固态硬盘, HSD: 混合盘, HDD: 机械硬盘), U盘.
    3)输入设备
    • 键盘, 鼠标
    4)输出设备
    • 显示器.
  2. 计算机软件: 能在计算机上运行的程序.
    1)系统软件: Windows操作系统, Mac操作系统, Linux操作系统.
    2)应用软件:
    • 概述: 我们程序员用编程代码开发的软件.
    • 例如: Typora, 微信, QQ.

1.2 语言简介

1.2.1 什么是语言(Language)?

指的就是人与人之间进行沟通, 交互的载体, 方式.

1.2.2 什么是计算机语言(Computer Language)?

指的就是人与计算机之间进行交互的方式.

1.2.3 计算机语言的分类:

1.2.3.1 机器语言
简单理解: 由二进制0, 1这样的指令组成.
例如: 10010表示 加法.
1.2.3.2 汇编语言
简单理解: 用一些简单的字母表示二进制序列(0, 1)
例如: add表示 加法.
优点: 文件小, 执行速度快, 可以直接操作计算机的硬件
弊端: 可读性和可移植性相对较差, 对程序员来讲, 门槛较高.
1.2.3.3 高级语言
简单理解: 由一些纯英文字母(包含大小写) 和 一些特殊符号组成.
例如: +表示 加法.
优点: 语法相对简单, 可读性, 兼容性较强, 对程序员来讲, 门槛较低.
弊端: 种类繁多, 每种语言都有自己的语法, 每学一门语言, 都要学习新的语法.

1.2.3.4 分类

  1. 第一代高级语言:
    例如: C语言, 以面向过程为编程思想, 唯一一门可以直接操作计算机硬件的高级语言
  2. 第二代高级语言:
    例如: C++, 以面向对象为编程思想, 没有默认的垃圾回收机制.
  3. 第三代高级语言: 目前市场上应用最多的语言
    例如: Java, C#, 以面向对象为编程思想, 而且有默认的垃圾回收机制(GC).
  4. 第四代高级语言: 未来的发展趋势, 现在还处于发展初期
    简单理解: 以面向问题编程思想为主, 也就是说: 告诉计算机做什么, 而不是怎么做.
    例如: Siri语言交互, 大数据云平台, 这些势必肯定会用到大数据框架等技术.

2. Java语言简介

2.1 为什么要学习Java语言

使用最广泛, 且简单易学
Java是一门强类型的语言
Java有非常完善的异常处理机制
Java提供了对于大数据的基础性支持

2.2 概述

Sun公司(Stanford University NetWork: 美国的斯坦福大学)在1995年推出的高级编程语言.
Java之父: 詹姆斯·高斯林(James Gosling)
Sun公司在2009年被甲骨文(Oracle)公司给收购了.

2.3 平台版本

J2SE: 标准版, 也是其他两个版本的基础. 在JDK1.5的时候正式更名为: JavaSE.
J2ME: 小型版, 一般用来研发嵌入式程序. 已经被Android替代了. 在JDK1.5的时候正式更名为: JavaME.
J2EE: 企业版, 一般开发企业级互联网程序. 在JDK1.5的时候正式更名为: JavaEE.

2.4 特点

1. 开源
指的是Java源代码是开放的.
2. 跨平台
指的是: 用Java代码编写的程序, 可以在不同的操作系统上运行.
原理: 由JVM保证Java程序的跨平台性, 但是JVM本身并不能跨平台.
图解:
3. 多态
4. 多线程
5. 面向对象

3. JDK和JRE(掌握)

3.1 概述

JDK: Java开发工具包(Java Development Kit), 包含开发工具 和 JRE.常用的开发工具: javac, java
JRE: Java运行时环境(Java Runtime Environment), 包含运行Java程序时所需的核心类库和 JVM.核心类库: java.lang, java.util, java.io
JVM: Java虚拟机(Java Virtual Machine)作用: 用来保证Java程序跨平台性的, 但是JVM本身并不能跨平台.

3.2 图解

3.3 Java环境搭建

1. JDK的下载Oracle官网: www.oracle.com直接下载JDK的地址:     https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
2. JDK的安装傻瓜式安装(下一步下一步就可以了)安装路径(以后但凡是安装开发软件, 都要满足以下两点: )不要直接安装到盘符目录下. 安装路径最好不要出现中文, 空格等特殊符号. 目录解释:bin: 存放的是编译器和工具db: 存数数据include: 编译本地方法.jre: Java运行时文件lib: 存放类库文件src.zip: 存放源代码的.
3. JDK的卸载去控制面板直接卸载就可以了. 小技巧: windows徽标键 + 字母R -> control -> 然后敲回车, 这样可以直接打开控制面板.

4. Path环境变量配置(掌握)

4.1 目的

让我们可以在任意目录下都能使用JDK提供的常用开发工具, 例如: javac, java

4.2 步骤

  1. 新建一个系统变量: JAVA_HOME, 它的值就是你安装的JDK的路径(注意: 不要带bin这一级)


注意: 变量值不要带bin目录.

  1. 在path中配置你刚才设置好的JAVA_HOME环境变量.
    格式: %JAVA_HOME%\bin
    解释: %JAVAHOME%表示引入该系统变量的值, 即: C:\Software\OfficeSoftware\jdk1.8.0112
  2. 测试
    – 方式一: 在DOS窗口中输入"javac 或者 java", 能看到对应的一坨指令即可.
    – 方式二: 在DOS窗口中输入"java -version", 可以看到当前配置的JDK的版本.

5. HelloWorld案例(掌握)

5.1 程序的开发步骤

Java程序的开发步骤一共3步, 分别是:
- 编写
- 编译
- 执行
图解:

5.2 编写源代码

  1. 在D:\BaseClass\EmploymentClass0520\JavaSE\Day01\code文件夹中创建HelloWorld.java文件.
  2. 用记事本打开HelloWorld.java文件.
  3. 在HelloWorld.java文件中编写如下内容:
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World!");System.out.println("你好, 欢迎来到我的直播间, 记得刷礼物喲!");}
}
注意: HelloWorld.java叫源代码文件, 是我们能看懂, 但是计算机看不懂的文件.

5.3 编译

通过javac指令将HelloWorld.java文件编译成HelloWorld.class字节码文件.
格式
在DOS窗口中输入如下内容:

javac HelloWorld.java

5.4 执行

通过java指令, 让计算机执行HelloWorld.class字节码文件.
格式
//在DOS窗口中输入如下内容:

java HelloWorld

注意: 直接写文件名即可, 不需要写文件后缀名, 即: .class

5.5 可能会遇到的问题

Bug
• 概述
在电脑系统或程序中,隐藏着的一些未被发现的缺陷或问题统称为bug(漏洞)
• 解决方案
多看, 多思考, 多尝试, 多总结

遇到的问题

  1. 非法字符.
    注意: 我们使用的符号全部都是英文状态下的符号
  2. 注意字母的大小写.
    注意: Java是严格区分大小写的. 也就是说: A和a不是一回事儿.
  3. 文件后缀名的问题.
    千万不要出现 HelloWorld.java.txt 这种情况
  4. 在编译或者运行时, 指令及文件名不要写错了.
    //编译的格式
    javac HelloWorld.java
    //运行的格式
    java HelloWorld

6. 常用的开发工具

6.1 概述

开发工具指的就是我们用来编写代码的软件.

6.2 分类

开发工具指的就是我们用来编写代码的软件, 常用的主要有以下几类:
• windows操作系统自带的记事本
缺点: 没有行号, 关键字不能高亮显示, 代码不能折叠.
• 高级记事本(Notepad++, Editplus)
优点: 有行号, 关键字能高亮显示, 代码能折叠.
缺点: 不方便我们调试, 不适合开发大型项目.
• 集成开发工具(IDE)
– 集成开发工具指的是集代码的编写, 编译, 运行, 调试, 重构等一系列功能于一体的软件.
– 常用的IDE如下:
• Eclipse
• MyEclipse
• IDEA

6.3 IDEA的下载和安装

6.3.1 概述

IDEA 全称 IntelliJ IDEA,是Java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等。免费版只支持Python等少数语言。

总结: IDEA这个软件是用ava语言开发的, 所以想使用IDEA, 你电脑上必须安装JRE.

6.3.2 下载

JetBrains公司官网: www.jetbrains.com
直接下载地址: www.jetbrains.com/idea/download/other.html

6.3.3 安装

  1. 双击安装包ideaIU-2018.3.4.exe进行安装, 选择next进行下一步.

  1. 修改安装路径, 然后选择next.

  1. 选择64bit(64位), 然后选择next.
  2. 直接选择next, 然后开始安装即可(这个过程需要点时间, 请耐心等待).


5. 安装成功.

6.3.4 首次启动

  1. 不导入任何配置, 选择Do not import settings, 然后选择OK.
  2. 设置用户界面主题, 可以根据自己的喜好进行设置, 然后选择Next: Default plugins.

3. 这个界面是告诉我们, 当前的IDEA可以开发哪些程序, 默认这些模块都是选中的, 如果明确知道不需要使用某些模块, 可以通过Disable All禁用掉此模块. 这里我们不需要禁用, 直接选择Next: Featured plugins即可.

4. 这个界面是JetBrains公司提供给我们的可选择性安装的5个小插件, 我们可以根据需求进行选择, 这里建议安装最后一个插件IDE Features Trainer, 它可以帮助我们快速使用IDEA. 然后选择Start using IntelliJ IDEA即可.

  1. 因为IDEA的旗舰版是收费的, 这里我们选择Evaluate for free(免费试用30天).

6.4 创建项目和模块

  1. IDEA版项目组成简介.
    简单理解: 一个Java程序 = 一个IDEA中创建的项目.


详细图解

2. 选择Create New Project, 新建项目.

3. 新建一个空项目.

4. 指定项目名和项目的保存位置.
5. 新建模块.

  1. 第一次使用IDEA, 需要关联JDK.


7. 创建Java模块.

  1. 指定模块名和路径, 然后选择Finish.

  1. 第一次创建模块时, 如果模块没有自动关联JDK, 则需要我们手动设置下关联.


10. 设好以后, 格式如下, 至此, 模块创建完毕.

  1. 第一次进入到项目界面, 会弹出如下对话框.

6.5 HelloWorld案例(IDEA版)

  1. 在src源代码包下创建自定义包 com.itheima.demo01


2. 在com.itheima.demo01包下创建HelloWorld类.


  1. 编写源代码, 然后在代码编辑区右键, 选择Run HelloWorld.main(), 执行程序即可.


4. 如果提示错误: 找不到或无法加载主类 com.itheima.demo01.HelloWorld, 则修改下项目语言级别即可, 然后重启下IDEA.
具体步骤:
左上角的File -> Project Structure -> Project -> 修改Project SDK和Project language level两个选项的值 -> 然后关闭IDEA软件, 重新打开即可.
图解:



5. 目录解释.

6.6 基本配置和常用快捷键

6.6.1 基本配置, 详见下图:

6.6.2 注意

隐藏不需要的文件, 需要在界面的lgnore files and folders选项值后加*.idea;*.iml;out;即可.

6.6.3 IDEA常用快捷键

常用的快捷键如下图:

6.7 导入和删除模块

6.7.1 删除项目

选择要移除的项目, 然后右键点击, 选择Remove Module, 即可移除该模块.

6.7.2 导入模块

选择IDEA软件左上角的File选项, 然后选择Project Structured, 选择Modules, 选择+(加号), 然后选择Import Module, 然后导入指定模块即可.





7. 注释(掌握)

7.1 概述

就是用来对程序进行解释和说明的文字.
大白话翻译: 注释是给我们程序员看的, 并不是给计算机看的.

7.2 分类

• 单行注释

//单行注释

• 多行注释

/*多行注释多行注释
*/

• 文档注释

/**文档注释文档注释
*/

8. 关键字(掌握)

8.1 概述

就是被Java语言赋予了特殊含义的单词.

8.2 特点

• 关键字是由纯英文字母组成的, 而且全部都是小写的.
• 常用的开发工具(Notepad++, IDEA)针对于关键字都会高亮显示.

8.3 常用的关键字(目前了解即可)

• public: 公共的权限, 目前先了解即可.
• class: 表示在创建一个类.
• static: 表示静态的意思.
• void: 表示方法的返回值类型.

8.4 定义Java源代码文件的格式

//类名可以自定义.
public class 类名 {public static void main(String[] args) {System.out.println(这里的内容可以随便写);}
}

8.5 补充: 保留字

• 概述:
现在还不是关键字的单词, 但是却具有关键字的意义, 在以后的JDK升级版本中, 可能会被升级为关键字的单词.
• 常见的保留字:
goto, const

9. 常量(掌握)

9.1 概述

指的是在程序的执行过程中, 其值不能发生改变的量.

9.2 分类

• 自定义常量(目前先了解, 在面向对象的时候, 才会详细解释)
• 字面值常量
解释: 根据字面意思就可以划分的常量.

  1. 整数常量.
    例如: 1, 2, 3, 11, 22, 521
  2. 小数常量.
    例如: 5.21, 13.14
  3. 字符常量.
    解释: 字符的意思是说只能有一个值, 而且要用单引号括起来
    例如: ‘A’, ‘B’, ‘c’, ‘10’(这样写会报错, 因为10是由1和0两个值组成的)
  4. 字符串常量.
    解释: 字符串常量值都要用双引号括起来
    例如: “abc”, “传智播客”, “黑马程序员”, “大数据”
  5. 布尔常量
    解释: 比较特殊, 值只有两个
    • true, 相当于正确
    • false, 相当于不正确
  6. 空常量
    解释: 比较特殊, 值只有一个: null, 表示什么都没有.
    注意: 空常量不能通过输出语句直接打印.

9.3 代码演示

public class ConstantDemo01 {// 定义main方法,作为程序的主路口public static void main(String[] args) {//1. 输出整数常量System.out.println(10);System.out.println(20);System.out.println("=============================");//2. 输出小数常量System.out.println(5.21);System.out.println("=============================");//3. 输出字符常量    要求值有且仅有一个System.out.println('男');//System.out.println('10');  // 这样写会报错 10 = 1 + 0//System.out.println('');  // 这样写会报错System.out.println("=============================");//4. 输出字符串常量System.out.println("落空空");System.out.println("");System.out.println("=============================");//5. 输出布尔常量System.out.println(true);System.out.println(false);System.out.println("=============================");//6. 输出空常量   在java中 空常量不能直接输出}}

10. 变量

10.1 概述

• 在程序的执行过程中, 其值可以在某个范围内发生改变的量就叫变量.
• 从本质上讲, 变量其实是内存中的一小块区域. 例如:
  – 商品的价格(5元,6元,4元)
  – 钟表的时间(5点,6点,6点半)
  – 人们的年龄(0岁,10岁,18岁……80岁)
  – 程序员生涯的职位(开发工程师,开发经理,项目经理,CTO)
• Java中要求一个变量每次只能保存一个数据,而且必须要明确保存数据的数据类型。

解释:
  – 数据类型:变量变化的范围就是数据类型
  – 变量名:每个变量都有一个名字,方便存取。
  – 初始化值:使用变量前,需要给变量赋值。

10.2 示例一: 变量入门

需求
定义变量, 记录班级的学生人数, 并将结果打印到控制台上.
参考代码

//1. 定义一个Java类, 类名叫: VariableDemo01
public class VariableDemo01 {//2. 定义main方法, 作为程序的主入口, 所有代码都是从这里开始执行的.public static void main(String[] args) {//3. 定义一个int类型的变量, 变量名叫a, 初始化值为: 121int a = 121;//4. 通过输出语句, 将变量a的值打印到控制台上. System.out.println(a);}
}

10.3 数据类型

Java是一种强类型语言, 针对于每一个数据都给出了明确的数据类型.
解释:
区分一门语言到底是强类型语言还是弱类型语言的依据是: 看这门语言对数据的数据类型划分是否精细.
如果精细, 则是强类型语言, 如果不精细, 则是弱类型语言. 10.3.1 数据类型的分类
• 基本数据类型(简称: 基本类型)
  – byte, short, char, int, long, float, double, boolean
• 引用数据类型(简称: 引用类型)
  – String, 数组, 类, 接口, 目前先了解, 后续会详细讲解.

10.3.1 数据类型的分类图解

10.3.2 数据类型的取值范围图解


记忆

  1. byte类型的取值范围是: -128 ~ 127,char类型的取值范围是: 0 ~ 65535
  2. 默认的整形是: int类型, 默认的浮点型(即: 小数类型)是: double类型.
  3. 定义long类型的数据时, 数据后边要加字母L(大小写均可), 建议加L
  4. 定义float类型的数据时, 数据后边要加字母F(大小写均可), 建议加F

10.4 格式

• 方式一: 声明变量并赋值.
数据类型 变量名 = 初始化值;

//示例: 声明(定义)一个int类型的变量, 变量名叫a, 初始化值为: 10
int a = 10;

• 方式二: 先声明, 后赋值.
数据类型 变量名;
变量名 = 初始化值;

//示例
//1. 声明(定义)一个int类型的变量, 变量名叫a
int a;
//2. 把数字10赋值给变量a
a = 10;

10.5 示例二: 定义变量并打印

需求 定义变量, 分别记录上述的8种基本类型数据, 并将变量值打印到控制台上.
思路分析

  1. 通过声明变量并赋值的方式实现.
  2. 通过先声明, 后赋值的方式实现.

参考代码
• 方式一: 声明变量并赋值.

     //1. 定义一个类, 类名叫: VariableDemo02
public class VariableDemo02 {//2. 定义main方法, 作为程序的主入口.public static void main(String[] args) {//3. 测试byte类型.//3.1 定义一个byte类型的变量, 变量名叫b, 初始化值为10.byte b = 10;//3.2 将变量b的值打印到控制台上.System.out.println(b);//4. 测试short类型.//4.1 定义一个short类型的变量, 变量名叫s, 初始化值为20.short s = 20;//4.2 将变量s的值打印到控制台上.System.out.println(s);//5. 测试char类型.//5.1 定义一个char类型的变量, 变量名叫c, 初始化值为'A'.char c = 'A';//5.2 将变量c的值打印到控制台上.System.out.println(c);//6. 测试int类型int a = 10;System.out.println(a);//7. 测试long类型, 数据后记得加字母L.long lon = 100L;System.out.println(lon);//8. 测试float类型, 数据后边加字母F.float f = 10.3F;System.out.println(f);//9. 测试double类型.double d = 5.21;System.out.println(d);//10. 测试boolean类型.boolean bb = true;System.out.println(bb);}
}

• 方式二: 先声明, 后赋值

     //1. 定义一个类, 类名叫: VariableDemo03
public class VariableDemo03 {//2. 定义main方法, 作为程序的主入口.public static void main(String[] args) {//3. 测试byte类型.//3.1 定义一个byte类型的变量, 变量名叫b.byte b;//3.2 把数字10赋值给变量b.b = 10;//3.3 将变量b的值打印到控制台上.System.out.println(b);//4. 测试char类型.//4.1 定义一个char类型的变量, 变量名叫c.char c;//4.2 把字符'A'赋值给变量c.c = 'A';//4.3 将变量c的值打印到控制台上.System.out.println(c);//5. 测试int类型int a;a = 10;System.out.println(a);//6. 测试double类型.double d;d = 5.21;System.out.println(d);//7. 测试boolean类型.boolean bb;bb = true;System.out.println(bb);}
}

10.6 注意事项

  1. 变量未赋值,不能使用.
  2. 变量只在它所属的范围内有效.
  3. 一行上可以定义多个变量,但是不建议.

10.7 示例三: 变量进阶

需求
演示上述使用变量时的三个注意事项.
参考代码

//1. 定义一个类, 类名叫: VariableDemo04
public class VariableDemo04 {//2. 定义main方法, 作为程序的主入口.public static void main(String[] args) {//3. 变量未赋值,不能使用.int a;//a = 10;System.out.println(a);      //这样写, 代码会报错, 因为变量a没有赋值.//4. 变量只在它所属的范围内有效.{//大括号包裹起来的代码叫: 代码块.//作用: 让变量尽可能早的从内存消失, 从而节约资源, 提高效率.double d = 5.21;System.out.println(d);}//下边这行代码会报错, 出了上述的大括号, 变量d就已经从内存中消失了, 无法访问.System.out.println(d);//5. 一行上可以定义多个变量,但是不建议.int e = 10, f = 20, g = 30;System.out.println(e);System.out.println(f);System.out.println(g);}
}

11. 标识符

11.1 概述

标识符就是用来给类, 接口, 方法, 变量, 包等起名字的规则.

11.2 命名规则

  1. 标识符只能包含52个英文字母(区分大小写)、0 ~ 9数字 、$(美元符号)和_(下划线)。

  2. 标识符不能以数字开头。

  3. 标识符不能和Java中的关键字重名。

  4. 最好做到见名知意.

    例如: name表示姓名, age表示年龄.

11.3 命名规范

  1. 类, 接口的命名规范: 每个单词的首字母都大写, 其他字母全部小写.(大驼峰命名法)
    例如: HelloWorld, VariableDemo.
  2. 变量, 方法的命名规范: 从第二个单词开始, 每个单词的首字母都大写, 其他字母全部小写(小驼峰命名法).
    例如: zhangSanAge, studentName
  3. 常量(指的是: 自定义常量)的命名规范: 所有字母都大写, 单词之间用_(下划线)隔开.
    例如: MAXVALUE, MINVALUE, PI
    注意: 目前先了解即可, 面向对象部分详细解释.
  4. 包的命名规范: 所有字母全部小写, 多级包之间用.(点符号)隔开, 一把是公司的域名反写.
    例如: cn.itcast, com.itheima

11.4 示例

需求
定义变量分别记录张三的年龄和性别(假设: 23, 男), 然后将变量值打印到控制台上.
参考代码

//1. 定义一个类, 类名叫: VariableDemo06
public class VariableDemo06 {//2. 定义main方法, 作为程序的主入口.public static void main(String[] args) {//3. 定义变量, 记录张三的年龄.int zhangSanAge = 23;//4. 定义变量, 记录张三的性别.char zhangSanSex = '男';//5. 打印年龄.System.out.println(zhangSanAge);//6. 打印性别.System.out.println(zhangSanSex);}
}

12. 数据类型转换

12.1 概述

不同类型的数据之间可能会进行运算,而这些数据取值范围不同,存储方式不同,直接进行运算可能会造成数据损失,所以需要将一种类型转换成另外一种类型再进行运算。
即: Java程序中要求参与计算的数据,必须保证数据类型的一致性,如果数据类型不一致将发生类型转换。

12.2 分类

• 自动(隐式)类型转换
• 强制(显式)类型转换

12.3 自动(隐式)类型转换

指的是小类型转大类型,会自动提升为大类型,运算结果是大类型.
大白话翻译: 将取值范围小的类型自动提升为取值范围大的类型

12.3.1 需求

  1. 定义两个int类型的变量a和b, 分别赋值为10, 20.
  2. 通过输出语句打印变量a和b的和.
  3. 定义int类型的变量c, 接收变量a和b的和.
  4. 打印变量c的值.
  5. 定义两个变量aa和bb, 一个是int类型的数据, 另一个是byte类型的数据.
  6. 定义变量cc接收 变量aa和bb的和.
  7. 分别设置变量cc的数据类型为byte类型和int类型, 观察结果并打印.

12.3.2 解释

当byte类型的数据和int类型的数据的数据进行计算时, 会自动将byte类型的数据提升为int类型, 然后再计算.

12.3.3 思考

  1. 如果是int类型的数据和double的数据相加, 结果是什么类型?
  2. 如果是char类型的数据和int类型的数据相加, 结果是什么类型?
  3. 如果是boolean类型的数据和int类型的数据相加, 结果是什么类型?

12.3.4 结论

转换规则为:

  1. 范围小的类型向范围大的类型提升,byte、short、char 运算时直接提升为int 。
  2. boolean类型的数据只有true和false这两个, 所以boolean类型的数据不参与类型转换.
    即: byte、short、char–>int–>long–>float–>double

图解:

12.4 强制(显式)类型转换

指的是手动将大类型转换成小类型,运算结果是小类型.
大白话翻译: 将取值范围大的类型强制转换成取值范围小的类型.

12.4.1 需求

尝试把小数1.5赋值给int类型的变量a, 并打印结果.

12.4.2 参考代码

public class DataTypeDemo02 {public static void main(String[] args) {//1. 定义int类型的变量a.int a;//2. 尝试将1.5赋值给变量a.//这行代码会报错, 大范围的数据赋值给小范围的数据类型, 必须通过`强制转换`格式实现.//a = 1.5;a = 10;     //这样写没问题.//3. 打印结果.System.out.println(a);}
}

12.4.3 解释

• double 类型占8个字节,int 类型占4个字节。
• 1.5 是double 类型,取值范围大于int 。
• 可以理解为double 是8升的水壶,int 是4升的水壶,不能把大水壶中的水直接放进小水壶去。
• 想要赋值成功,只有通过强制类型转换,将double 类型强制转换成int 类型才能赋值。
• 比较而言,自动转换是Java自动执行的,而强制转换需要我们自己手动执行。

12.4.4 强制转换格式

数据类型 变量名 = (数据类型)要被转换的数据值;

//示例: 将1.5赋值给int类型,代码修改为:
int a = (int)1.5;

12.4.5 思考题

下述代码会不会报错, 如果会, 哪一行会报错, 为什么? 怎么修改代码?

public class DataTypeDemo03 {public static void main(String[] args) {short s = 11;s = s + 3;System.out.println(s);}
}

12.4.6 图解

13. ASCII码表

观察下述代码, 打印结果是多少呢?

public static void main(String[] args) {//字符类型变量char c = 'a';int i = 1;//字符类型和int类型计算System.out.println(c+i);  //输出结果是???
}

在计算机的内部都是二进制的0, 1数据,如何让计算机可以直接识别人类文字呢?
于是就产生出了编码表的概念。
• 编码表:就是将人类的文字和一个十进制数进行对应起来组成一张表格。 ‘a’ -> 97 char:0-65535
• 存储字符时:需要查找ASCII码表,找到字符对应的数字,将数字转换为二进制数存放到计算机中
• 使用字符时:将对应的二进制数转换为十进制 找到ASCII表中对应的字符 显示出来
• 将所有的英文字母,数字,符号都和十进制进行了对应,因此产生了世界上第一张编码表ASCII码表.
• ASCII(American Standard Code for Information Interchange 美国标准信息交换码), 规则如下:
字符 数值
0 48
9 57
A 65
Z 90
a 97
z 122
注意:
在char类型和int类型计算的过程中,char类型的字符先查询编码表,得到97,再和1求和,结果为98。
char类型提升为了int类型。char类型内存2个字节,int类型内存4个字节。

14. 运算符

14.1 概述

• 运算符和表达式
  – 运算符:用来连接常量或者变量的符号, 就叫运算符.
  – 表达式:用运算符把常量或者变量连接起来符合java语法的式子就称之为表达式。
• 不同运算符连接的表达式体现的是不同类型的表达式。
例如:
  – +(加号) 是运算符,并且是算术运算符。
  – a + b:是表达式,由于+是算术运算符,所以这个表达式叫算术表达式。

14.2 分类

• 算术运算符
• 赋值运算符
• 比较(关系)运算符
• 逻辑运算符
• 三元(三目)运算符

14.3 算数运算符

算术运算符指的是用来对变量或者常量进行算术操作的, 例如: 加减乘除等.

14.3.1 分类

算数运算符包括 作用
+ 加法运算,字符串连接运算
- 减法运算
* 乘法运算
/ 除法运算
% 取模运算,两个数字相除取余数
++ 自增运算符, 相当于自身 + 1
- - 自减运算符, 相当于自身 - 1

14.3.2 注意

• Java中, 整数相除, 结果还是整数.
• + 符号在字符串中的操作:
  – + 符号在遇到字符串的时候,表示连接、拼接的含义。
  – “a”+"b"的结果是“ab”,连接含义

public static void main(String[] args){System.out.println("5+5="+5+5);//输出5+5=55
}

14.4 自增自减运算符

符号 作用 声明
++ 自增 变量的值加1
- - 自减 变量的值减1

解释: ++ 运算,变量自己增长1。反之,-- 运算,变量自己减少1,用法与++ 一致, 此处以++举例.
• 独立运算:
  – 变量在独立运算时,前++和后++没有区别 。
  – 变量前++ :例如 ++i 。
  – 变量后++ :例如 i++ 。
• 混合运算:
  – 和其他变量放在一起,前++和后++就产生了不同。
  – 变量前++ :变量a自己加1,将加1后的结果赋值给b,也就是说a先计算。a和b的结果都是2。

public static void main(String[] args) {int a = 1;int b = ++a;System.out.println(a);//计算结果是2System.out.println(b);//计算结果是2
}

– 变量后++ :变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a自己再加1。a的结果是2,b的结果是1。

public static void main(String[] args) {int a = 1;int b = a++;System.out.println(a);//计算结果是2System.out.println(b);//计算结果是1
}

14.5 赋值运算符

符号 作用 说明
= 赋值 a=10,将10赋值给变量a
+= 加后赋值 a+=b,将a+b的值给a
-= 减后赋值 a-=b,将a-b的值给a
*= 乘后赋值 a*=b,将a×b的值给a
/= 除后赋值 a/=b,将a÷b的商给a
%= 取余后赋值 a%=b,将a÷b的余数给a

• 赋值运算符,就是将符号右边的值,赋给左边的变量。

public static void main(String[] args){int i = 5;i+=5;//计算方式 i=i+5 变量i先加5,再赋值变量iSystem.out.println(i); //输出结果是10
}

• +=符号的扩展
下面的程序有问题吗?

public static void main(String[] args){short s = 1;s+=1;System.out.println(s);
}

分析: s += 1 逻辑上看作是s = s + 1 计算结果被提升为int类型,再向short类型赋值时发生错误,因为不能将取值范围大的类型赋值到取值范围小的类型。但是,s=s+1进行两次运算,+= 是一个运算符,只运算一次,并带有强制转换的特点,也就是说s += 1 就是s = (short)(s + 1),因此程序没有问题编译通过,运行结果是2.

Java基础教程-01-Java简介与变量介绍相关推荐

  1. 【Java基础教程】(一)入门介绍篇 · 上:快速掌握核心概念,开启Java世界的探索之旅!这篇Java入门宝典助你翱翔~

    Java基础教程之入门介绍 · 上 本节学习目标 1️⃣ Java发展简史 1.1 诞生 1.2 发展 1.3 分支 2️⃣ 特征 3️⃣ 代码执行过程

  2. 字段名对但是提示标识符无效_【Java基础教程】Java标识符和关键字

    任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍 Java 的标识符.关键字和保留字. 标识符 Java 中标识符是为方法.变量或其他用户定义项所定义的名称.标识符可以有一个或多个字符.在 ...

  3. Java基础教程17-方法简介

    本来来介绍Java中方法的定义和方法的调用.什么是方法呢?方法也有时候叫函数,有时候method和function在开发语言中真的无法区分,Java里面,使用method去描述,可能是更合适一些.所以 ...

  4. java基础教程知识点,[Java教程]js基础知识点总结

    [Java教程]js基础知识点总结 0 2016-11-01 21:00:04 如何在一个网站或者一个页面,去书写你的js代码: 1.js的分层(功能):jquery(tool) 组件(ui) 应用( ...

  5. java基础入门数据类型,JAVA基础教程:JAVA的基本数据类型及介绍

    欢迎分享本文,转载请保留出处. java的数据类型可以分为基本数据类型和引用数据类型,其中基本数据类型包括:字节型,字符型,短整型,整型,长整型,单精度型,双精度型和布尔型 引用类型又可以划分为 类, ...

  6. Java基础教程-刘刚-专题视频课程

    Java基础教程-2704人已学习 课程介绍         Java基础教程是一套入门Java开发语言的课程,它是由浅入深的介绍Java基础内容,包括Java介绍.基本类型及运算符.控制执行流程.字 ...

  7. Java基础教程:面向对象编程[2]

    Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default ...

  8. Java基础教程(12)--深入理解类

    一.方法的返回值   当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...

  9. Java基础教程:Lambda表达式

    Java基础教程:Lambda表达式 引入Lambda Java 是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象.在 Java ...

  10. Java基础教程:注解

    Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...

最新文章

  1. 2022-2028年中国安防视频行业市场前景分析预测报告
  2. c#_winform_选择文件保存路径
  3. 计算机软硬件作品构思报告,计算机方面的实训报告
  4. Linux的Qt编译出现:-1: error: cannot find -lGL问题的解决方法
  5. Graphviz的安装及纠错
  6. android WebViewClient和WebChromeClient
  7. md5是什么_全民小视频视频修改md5有什么用6
  8. Introduction to Computer Networking学习笔记(十五):End to End Delay 端对端延迟
  9. 计算机等级考试如何评改试题,全国计算机考试上机考试是如何改卷的
  10. CCFCSP历年认证考试真题解答汇总(已解决20道,持续更新ing)
  11. 数据分析 | 数据预处理(归一化和标准化)
  12. 打开本地flash webview open swf
  13. 黑客防线 2007~2012 NPM、PYPI、DockerHub 备份
  14. [BZOJ1984]月下“毛景树”(树链剖分)
  15. 一文读懂 UniProt 数据库(2023 最新版)
  16. C语言---qsort函数(初步了解)
  17. 二进制 八进制 十进制 十六进制
  18. ios 判断电话号码
  19. java 甘特图_Java报表软件--甘特图(Gantt chart)深度解析
  20. 【知识分享】苹果Apple-Mac操作系统OS的Big Sur 和Monterey的异同

热门文章

  1. 奇迹暖暖安卓鸿蒙互通吗,奇迹暖暖安卓和ios互通吗 奇迹暖暖苹果和安卓能一起玩吗...
  2. SSE学习-一个小栗子
  3. 最畅销的销售书籍推荐:《销售管理必读12篇》
  4. Android 微信支付宝授权获取用户信息
  5. 你的知识需要管理-博学审问慎思明辨笃行
  6. 集线器(HUB)、交换机(Switch)、路由器(Router)
  7. poi操作word,写入一个图片,并且设置其大小,以及图片和base64之间的互相转换,以及表格内容替换和插入
  8. sigmastar—ISP图像调试(AWB矫正)
  9. 查看 设置mysql时区
  10. java毕业设计数码产品导购网站mybatis+源码+调试部署+系统+数据库+lw