Java基础教程-01-Java简介与变量介绍

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. 面向对象 

Java基础教程-01-Java简介与变量介绍_第1张图片

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 图解

Java基础教程-01-Java简介与变量介绍_第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这一级)

Java基础教程-01-Java简介与变量介绍_第3张图片
注意: 变量值不要带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步, 分别是:
- 编写
- 编译
- 执行
图解:
Java基础教程-01-Java简介与变量介绍_第4张图片

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进行下一步.

Java基础教程-01-Java简介与变量介绍_第5张图片

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

Java基础教程-01-Java简介与变量介绍_第6张图片

  1. 选择64bit(64位), 然后选择next.
    Java基础教程-01-Java简介与变量介绍_第7张图片
  2. 直接选择next, 然后开始安装即可(这个过程需要点时间, 请耐心等待).

Java基础教程-01-Java简介与变量介绍_第8张图片
5. 安装成功.
Java基础教程-01-Java简介与变量介绍_第9张图片

6.3.4 首次启动
  1. 不导入任何配置, 选择Do not import settings, 然后选择OK.
    Java基础教程-01-Java简介与变量介绍_第10张图片
  2. 设置用户界面主题, 可以根据自己的喜好进行设置, 然后选择Next: Default plugins.

Java基础教程-01-Java简介与变量介绍_第11张图片3. 这个界面是告诉我们, 当前的IDEA可以开发哪些程序, 默认这些模块都是选中的, 如果明确知道不需要使用某些模块, 可以通过Disable All禁用掉此模块. 这里我们不需要禁用, 直接选择Next: Featured plugins即可.
Java基础教程-01-Java简介与变量介绍_第12张图片
4. 这个界面是JetBrains公司提供给我们的可选择性安装的5个小插件, 我们可以根据需求进行选择, 这里建议安装最后一个插件IDE Features Trainer, 它可以帮助我们快速使用IDEA. 然后选择Start using IntelliJ IDEA即可.
Java基础教程-01-Java简介与变量介绍_第13张图片

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

Java基础教程-01-Java简介与变量介绍_第14张图片

6.4 创建项目和模块

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

Java基础教程-01-Java简介与变量介绍_第15张图片
详细图解
Java基础教程-01-Java简介与变量介绍_第16张图片
2. 选择Create New Project, 新建项目.
Java基础教程-01-Java简介与变量介绍_第17张图片
3. 新建一个空项目.
Java基础教程-01-Java简介与变量介绍_第18张图片
4. 指定项目名和项目的保存位置.
Java基础教程-01-Java简介与变量介绍_第19张图片5. 新建模块.
Java基础教程-01-Java简介与变量介绍_第20张图片

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

Java基础教程-01-Java简介与变量介绍_第21张图片
7. 创建Java模块.
Java基础教程-01-Java简介与变量介绍_第22张图片

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

Java基础教程-01-Java简介与变量介绍_第23张图片

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

Java基础教程-01-Java简介与变量介绍_第24张图片
10. 设好以后, 格式如下, 至此, 模块创建完毕.
Java基础教程-01-Java简介与变量介绍_第25张图片

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

Java基础教程-01-Java简介与变量介绍_第26张图片

6.5 HelloWorld案例(IDEA版)

  1. 在src源代码包下创建自定义包 com.itheima.demo01
    Java基础教程-01-Java简介与变量介绍_第27张图片

Java基础教程-01-Java简介与变量介绍_第28张图片
2. 在com.itheima.demo01包下创建HelloWorld类.

Java基础教程-01-Java简介与变量介绍_第29张图片
Java基础教程-01-Java简介与变量介绍_第30张图片

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

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

Java基础教程-01-Java简介与变量介绍_第32张图片
Java基础教程-01-Java简介与变量介绍_第33张图片
5. 目录解释.

Java基础教程-01-Java简介与变量介绍_第34张图片

6.6 基本配置和常用快捷键

6.6.1 基本配置, 详见下图: Java基础教程-01-Java简介与变量介绍_第35张图片
6.6.2 注意

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

6.6.3 IDEA常用快捷键

常用的快捷键如下图:

Java基础教程-01-Java简介与变量介绍_第36张图片

6.7 导入和删除模块

6.7.1 删除项目

选择要移除的项目, 然后右键点击, 选择Remove Module, 即可移除该模块.
Java基础教程-01-Java简介与变量介绍_第37张图片

6.7.2 导入模块

选择IDEA软件左上角的File选项, 然后选择Project Structured, 选择Modules, 选择+(加号), 然后选择Import Module, 然后导入指定模块即可.
Java基础教程-01-Java简介与变量介绍_第38张图片
Java基础教程-01-Java简介与变量介绍_第39张图片
Java基础教程-01-Java简介与变量介绍_第40张图片
Java基础教程-01-Java简介与变量介绍_第41张图片

Java基础教程-01-Java简介与变量介绍_第42张图片

Java基础教程-01-Java简介与变量介绍_第43张图片
Java基础教程-01-Java简介与变量介绍_第44张图片
Java基础教程-01-Java简介与变量介绍_第45张图片

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中要求一个变量每次只能保存一个数据,而且必须要明确保存数据的数据类型。
Java基础教程-01-Java简介与变量介绍_第46张图片
解释:
  – 数据类型:变量变化的范围就是数据类型
  – 变量名:每个变量都有一个名字,方便存取。
  – 初始化值:使用变量前,需要给变量赋值。

10.2 示例一: 变量入门

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

//1. 定义一个Java类, 类名叫: VariableDemo01
public class VariableDemo01 {
    //2. 定义main方法, 作为程序的主入口, 所有代码都是从这里开始执行的.
    public static void main(String[] args) {
        //3. 定义一个int类型的变量, 变量名叫a, 初始化值为: 121
        int 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 数据类型的分类图解

Java基础教程-01-Java简介与变量介绍_第47张图片

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

Java基础教程-01-Java简介与变量介绍_第48张图片
记忆

  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 概述

标识符就是用来给类, 接口, 方法, 变量, 包等起名字的规则.
Java基础教程-01-Java简介与变量介绍_第49张图片

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类型, 然后再计算.
Java基础教程-01-Java简介与变量介绍_第50张图片

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

图解:
Java基础教程-01-Java简介与变量介绍_第51张图片

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 图解

Java基础教程-01-Java简介与变量介绍_第52张图片

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);//计算结果是2
    System.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);//计算结果是2
    System.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,再赋值变量i
    System.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基础,java)