Java基础教程-01-Java简介与变量介绍
Java基础教程-01-Java简介与
1. 计算机基本概念
1.1 计算机组成
计算机由计算机硬件和计算机软件组成.
- 计算机硬件: 你的眼睛能看的见, 你的手能摸得着的东西.
1)中央处理器(CPU)
• 由运算器和控制器组成.
2)存储器
• 内存: 内存条(代数, 睿频).
• 外存: 硬盘(SSD: 固态硬盘, HSD: 混合盘, HDD: 机械硬盘), U盘.
3)输入设备
• 键盘, 鼠标
4)输出设备
• 显示器. - 计算机软件: 能在计算机上运行的程序.
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 分类
- 第一代高级语言:
例如: C语言, 以面向过程为编程思想, 唯一一门可以直接操作计算机硬件的高级语言 - 第二代高级语言:
例如: C++, 以面向对象为编程思想, 没有默认的垃圾回收机制. - 第三代高级语言: 目前市场上应用最多的语言
例如: Java, C#, 以面向对象为编程思想, 而且有默认的垃圾回收机制(GC). - 第四代高级语言: 未来的发展趋势, 现在还处于发展初期
简单理解: 以面向问题编程思想为主, 也就是说: 告诉计算机做什么, 而不是怎么做.
例如: 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 步骤
- 新建一个系统变量: JAVA_HOME, 它的值就是你安装的JDK的路径(注意: 不要带bin这一级)
注意: 变量值不要带bin目录.
- 在path中配置你刚才设置好的JAVA_HOME环境变量.
格式: %JAVA_HOME%\bin
解释: %JAVAHOME%表示引入该系统变量的值, 即: C:\Software\OfficeSoftware\jdk1.8.0112 - 测试
– 方式一: 在DOS窗口中输入"javac 或者 java", 能看到对应的一坨指令即可.
– 方式二: 在DOS窗口中输入"java -version", 可以看到当前配置的JDK的版本.
5. HelloWorld案例(掌握)
5.1 程序的开发步骤
Java程序的开发步骤一共3步, 分别是:
- 编写
- 编译
- 执行
图解:
5.2 编写源代码
- 在D:\BaseClass\EmploymentClass0520\JavaSE\Day01\code文件夹中创建HelloWorld.java文件.
- 用记事本打开HelloWorld.java文件.
- 在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(漏洞)
• 解决方案
多看, 多思考, 多尝试, 多总结
遇到的问题
- 非法字符.
注意: 我们使用的符号全部都是英文状态下的符号 - 注意字母的大小写.
注意: Java是严格区分大小写的. 也就是说: A和a不是一回事儿. - 文件后缀名的问题.
千万不要出现 HelloWorld.java.txt 这种情况 - 在编译或者运行时, 指令及文件名不要写错了.
//编译的格式
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 安装
- 双击安装包ideaIU-2018.3.4.exe进行安装, 选择next进行下一步.
- 修改安装路径, 然后选择next.
- 选择64bit(64位), 然后选择next.
- 直接选择next, 然后开始安装即可(这个过程需要点时间, 请耐心等待).
5. 安装成功.
6.3.4 首次启动
- 不导入任何配置, 选择Do not import settings, 然后选择OK.
- 设置用户界面主题, 可以根据自己的喜好进行设置, 然后选择Next: Default plugins.
3. 这个界面是告诉我们, 当前的IDEA可以开发哪些程序, 默认这些模块都是选中的, 如果明确知道不需要使用某些模块, 可以通过Disable All禁用掉此模块. 这里我们不需要禁用, 直接选择Next: Featured plugins即可.
4. 这个界面是JetBrains公司提供给我们的可选择性安装的5个小插件, 我们可以根据需求进行选择, 这里建议安装最后一个插件IDE Features Trainer, 它可以帮助我们快速使用IDEA. 然后选择Start using IntelliJ IDEA即可.
- 因为IDEA的旗舰版是收费的, 这里我们选择Evaluate for free(免费试用30天).
6.4 创建项目和模块
- IDEA版项目组成简介.
简单理解: 一个Java程序 = 一个IDEA中创建的项目.
详细图解
2. 选择Create New Project, 新建项目.
3. 新建一个空项目.
4. 指定项目名和项目的保存位置.
5. 新建模块.
- 第一次使用IDEA, 需要关联JDK.
7. 创建Java模块.
- 指定模块名和路径, 然后选择Finish.
- 第一次创建模块时, 如果模块没有自动关联JDK, 则需要我们手动设置下关联.
10. 设好以后, 格式如下, 至此, 模块创建完毕.
- 第一次进入到项目界面, 会弹出如下对话框.
6.5 HelloWorld案例(IDEA版)
- 在src源代码包下创建自定义包 com.itheima.demo01
2. 在com.itheima.demo01包下创建HelloWorld类.
- 编写源代码, 然后在代码编辑区右键, 选择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 基本配置, 详见下图: ![](/assets/blank.gif)
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, 2, 3, 11, 22, 521 - 小数常量.
例如: 5.21, 13.14 - 字符常量.
解释: 字符的意思是说只能有一个值, 而且要用单引号括起来
例如: ‘A’, ‘B’, ‘c’, ‘10’(这样写会报错, 因为10是由1和0两个值组成的) - 字符串常量.
解释: 字符串常量值都要用双引号括起来
例如: “abc”, “传智播客”, “黑马程序员”, “大数据” - 布尔常量
解释: 比较特殊, 值只有两个
• true, 相当于正确
• false, 相当于不正确 - 空常量
解释: 比较特殊, 值只有一个: 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 数据类型的取值范围图解
记忆
- byte类型的取值范围是: -128 ~ 127,char类型的取值范围是: 0 ~ 65535
- 默认的整形是: int类型, 默认的浮点型(即: 小数类型)是: double类型.
- 定义long类型的数据时, 数据后边要加字母L(大小写均可), 建议加L
- 定义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. 定义一个类, 类名叫: 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 注意事项
- 变量未赋值,不能使用.
- 变量只在它所属的范围内有效.
- 一行上可以定义多个变量,但是不建议.
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 命名规则
标识符只能包含52个英文字母(区分大小写)、0 ~ 9数字 、$(美元符号)和_(下划线)。
标识符不能以数字开头。
标识符不能和Java中的关键字重名。
最好做到见名知意.
例如: name表示姓名, age表示年龄.
11.3 命名规范
- 类, 接口的命名规范: 每个单词的首字母都大写, 其他字母全部小写.(大驼峰命名法)
例如: HelloWorld, VariableDemo. - 变量, 方法的命名规范: 从第二个单词开始, 每个单词的首字母都大写, 其他字母全部小写(小驼峰命名法).
例如: zhangSanAge, studentName - 常量(指的是: 自定义常量)的命名规范: 所有字母都大写, 单词之间用_(下划线)隔开.
例如: MAXVALUE, MINVALUE, PI
注意: 目前先了解即可, 面向对象部分详细解释. - 包的命名规范: 所有字母全部小写, 多级包之间用.(点符号)隔开, 一把是公司的域名反写.
例如: 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 需求
- 定义两个int类型的变量a和b, 分别赋值为10, 20.
- 通过输出语句打印变量a和b的和.
- 定义int类型的变量c, 接收变量a和b的和.
- 打印变量c的值.
- 定义两个变量aa和bb, 一个是int类型的数据, 另一个是byte类型的数据.
- 定义变量cc接收 变量aa和bb的和.
- 分别设置变量cc的数据类型为byte类型和int类型, 观察结果并打印.
12.3.2 解释
当byte类型的数据和int类型的数据的数据进行计算时, 会自动将byte类型的数据提升为int类型, 然后再计算.
12.3.3 思考
- 如果是int类型的数据和double的数据相加, 结果是什么类型?
- 如果是char类型的数据和int类型的数据相加, 结果是什么类型?
- 如果是boolean类型的数据和int类型的数据相加, 结果是什么类型?
12.3.4 结论
转换规则为:
- 范围小的类型向范围大的类型提升,byte、short、char 运算时直接提升为int 。
- 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简介与变量介绍相关推荐
- 【Java基础教程】(一)入门介绍篇 · 上:快速掌握核心概念,开启Java世界的探索之旅!这篇Java入门宝典助你翱翔~
Java基础教程之入门介绍 · 上 本节学习目标 1️⃣ Java发展简史 1.1 诞生 1.2 发展 1.3 分支 2️⃣ 特征 3️⃣ 代码执行过程
- 字段名对但是提示标识符无效_【Java基础教程】Java标识符和关键字
任何一种计算机语言都离不开标识符和关键字,因此下面将详细介绍 Java 的标识符.关键字和保留字. 标识符 Java 中标识符是为方法.变量或其他用户定义项所定义的名称.标识符可以有一个或多个字符.在 ...
- Java基础教程17-方法简介
本来来介绍Java中方法的定义和方法的调用.什么是方法呢?方法也有时候叫函数,有时候method和function在开发语言中真的无法区分,Java里面,使用method去描述,可能是更合适一些.所以 ...
- java基础教程知识点,[Java教程]js基础知识点总结
[Java教程]js基础知识点总结 0 2016-11-01 21:00:04 如何在一个网站或者一个页面,去书写你的js代码: 1.js的分层(功能):jquery(tool) 组件(ui) 应用( ...
- java基础入门数据类型,JAVA基础教程:JAVA的基本数据类型及介绍
欢迎分享本文,转载请保留出处. java的数据类型可以分为基本数据类型和引用数据类型,其中基本数据类型包括:字节型,字符型,短整型,整型,长整型,单精度型,双精度型和布尔型 引用类型又可以划分为 类, ...
- Java基础教程-刘刚-专题视频课程
Java基础教程-2704人已学习 课程介绍 Java基础教程是一套入门Java开发语言的课程,它是由浅入深的介绍Java基础内容,包括Java介绍.基本类型及运算符.控制执行流程.字 ...
- Java基础教程:面向对象编程[2]
Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default ...
- Java基础教程(12)--深入理解类
一.方法的返回值 当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...
- Java基础教程:Lambda表达式
Java基础教程:Lambda表达式 引入Lambda Java 是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象.在 Java ...
- Java基础教程:注解
Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...
最新文章
- 2022-2028年中国安防视频行业市场前景分析预测报告
- c#_winform_选择文件保存路径
- 计算机软硬件作品构思报告,计算机方面的实训报告
- Linux的Qt编译出现:-1: error: cannot find -lGL问题的解决方法
- Graphviz的安装及纠错
- android WebViewClient和WebChromeClient
- md5是什么_全民小视频视频修改md5有什么用6
- Introduction to Computer Networking学习笔记(十五):End to End Delay 端对端延迟
- 计算机等级考试如何评改试题,全国计算机考试上机考试是如何改卷的
- CCFCSP历年认证考试真题解答汇总(已解决20道,持续更新ing)
- 数据分析 | 数据预处理(归一化和标准化)
- 打开本地flash webview open swf
- 黑客防线 2007~2012 NPM、PYPI、DockerHub 备份
- [BZOJ1984]月下“毛景树”(树链剖分)
- 一文读懂 UniProt 数据库(2023 最新版)
- C语言---qsort函数(初步了解)
- 二进制 八进制 十进制 十六进制
- ios 判断电话号码
- java 甘特图_Java报表软件--甘特图(Gantt chart)深度解析
- 【知识分享】苹果Apple-Mac操作系统OS的Big Sur 和Monterey的异同
热门文章
- 奇迹暖暖安卓鸿蒙互通吗,奇迹暖暖安卓和ios互通吗 奇迹暖暖苹果和安卓能一起玩吗...
- SSE学习-一个小栗子
- 最畅销的销售书籍推荐:《销售管理必读12篇》
- Android 微信支付宝授权获取用户信息
- 你的知识需要管理-博学审问慎思明辨笃行
- 集线器(HUB)、交换机(Switch)、路由器(Router)
- poi操作word,写入一个图片,并且设置其大小,以及图片和base64之间的互相转换,以及表格内容替换和插入
- sigmastar—ISP图像调试(AWB矫正)
- 查看 设置mysql时区
- java毕业设计数码产品导购网站mybatis+源码+调试部署+系统+数据库+lw