Java知识骨架

一、Java概述

1.1 Java历史

1.1.1 Java开发公司

Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言,后被Oracle公司收购,现由Oracle(甲骨文)公司进行设计与维护

1.1.2 Java开发人员

由加拿大的软件专家James Gosling詹姆斯·高斯林(Java之父)和同事们共同研发

1.1.3 Java开发体系

JavaME(Java2 Platform Micro Edition),旧称J2ME(Java Micro Edition),即Java平台微型版
JavaSE(Java2 Platform Standard Edition),旧称J2SE(Java Standard Edition),即Java平台标准版
JavaEE(Java2 Platform Enterprise Edition),旧称J2EE(Java Enterprise Edition),即Java平台企业版

2005 年 6 月,JavaOne 大会召开,SUN 公司公开 Java SE 6。此时,Java 的各种版本已经更名,以取消其中的数字 “2”:J2EE 更名为 Java EE,J2SE 更名为Java SE,J2ME 更名为 Java ME

1.1.4 Java名字起源

Java前身叫做Oak(橡树)语言,后因Oak名称涉及版权问题而更名为Java。Java的名字来源于一个盛产咖啡的岛屿–爪哇小岛

1.1.5 Java语言图标

咖啡的提神特性非常符合程序员的工作性质,因此采用一杯冒着浓浓热气的咖啡图案作为Java的图标。综上所述,Java的取名对于编程者来说显得是如此的合乎情理

1.1.6 Java发展历史

1995 年 05 月 23 日(Java诞生)
|
1996 年 01 月(第一个 JDK即JDK1.0 诞生)
|
1997 年 02 月 18 日(JDK1.1 发布)
|
1997 年 04 月 02 日(JavaOne 会议召开,参与者逾一万人,创当时全球同类会议规模之纪录)
|
1997 年 09 月(JavaDeveloperConnection 社区成员超过十万)
|
1998 年 12 月 08 日(JAVA企业平台即 J2EE 发布)
|
1999 年 06月(Sun发布标准版JavaSE、企业版JavaEE、JavaME微型版)
|
2000 年 05 月 08 日(JDK1.3 发布)
|
2000 年 05 月 29 日(JDK1.4 发布)
|
2001 年 06 月 05 日(NOKIA 宣布到 2003 年将出售 1 亿部支持 Java 的手机)
|
2001 年 09 月 24 日(J2EE1.3 发布)
|
2002 年 02 月 26 日(J2SE1.4 发布自此 Java 的计算能力有了大幅提升)
|
2004 年 09 月 30 日18:00PM(J2SE1.5 发布,为表该版本重要性J2SE1.5 更名为 Java SE 5.0)
|
2005 年 06 月(J2EE 更名为 Java EE,J2SE 更名为 Java SE,J2ME 更名为 Java ME)
|
2006 年 12 月 (JRE6.0 发布)
|
2009 年 04 月 20 日(甲骨文 74 亿美元收购 Sun,取得 Java 的版权)
|
2011 年 07 月 28 日(Java7.0 正式版发布)
|
2014 年 03 月 18 日(Java SE 8 发布)
|
2017 年 09 月 21 日(Java SE 9 发布)
|
2018 年 03 月 21 日( Java SE 10 发布)
|
2018 年 09 月 25 日(Java SE 11 发布)
|
2019 年 03 月 20 日(Java SE 12 发布 )
|
2020 年 03 月 17 日(Java SE 14 发布)
|
2021 年 09 月(Java SE 17 发布)
|
2022 年 09 月 20 日(Java SE 19 发布)

1.2 Java编程

1.2.1 Java编程特性

1.Java 语言是简单的(语法与C、C++相近、易学习和使用、自动分配和回收内存空间)

2.Java 语言是多线程的(支持多线程同时执行、多线程之间的同步机制【synchronized】)

3.Java 语言是解释型的(要Java解释器对字节码解释执行,类在联接阶段被载入运行环境)

4.Java 语言是安全的(安全防范机制(类ClassLoader)、以防恶意代码的攻击的安全机制)

5.Java 语言是可移植的(Java编译器用Java实现、Java运行环境用ANSI C实现、中立体系)

6.Java 语言是面向对象的(只支持类之间单继承但支持接口之间多继承、全面支持动态绑定)

7.Java 语言是健壮的(强类型机制、异常处理、垃圾自动收集、安全检查机制、指针的丢弃)

8.Java 语言是体系结构中立的(体系结构中立的字节码文件可实现异构网络环境和软件分发)

9.Java 语言是分布式的(Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段)

10.Java 语言是动态的(动态适应变化环境、运行时刻实时类型检查、类动态被载入运行环境)

11.Java 语言是高性能的(运行速度随着 JIT(Just-In-Time)编译器技术发展越来越接近于 C++)

1.2.2 Java编程环境

低级开发工具
记事本(自带)、Notepad++、SublimeText、Typora、Vim(神之编辑器)、Emacs(编辑器之神)

操作系统(OS)
Linux(开源)、Mac OS(Apple)、Windows 95/98/2000/XP、Win 7/8、Win10/11(主流)

开发工具包(JDK)
JDK1.0、JDK8(也被叫做Java8或者JDK1.8,主流)、JDK11(主流)、JDK17(主流)、Java19

集成开发环境(IDE)
VSCode(MS)、Eclipse(IBM)、MyEclipse(主流)、IntelliJ IDEA(主流)、NetBeans

PS:

编程环境组合方式一:操作系统 + 开发工具包 + 低级开发工具(适用于初学者使用)

编程环境组合方式二:操作系统 + 开发工具包 + 集成开发环境(适用于所有编程者使用)

初学Java建议用SublimeText+DOS的方式来书写代码、编译代码、运行代码、调试代码

掌握Java后建议用Typora+IDEA的方式来书写代码,开发效率更快并且能很好地记录代码

1. Notepad++(不推荐,UI过丑)

2. 记事本(不推荐,因为功能太简单,书写代码不方便)

3. Eclipse(不推荐,操作过于复杂且UI简单,界面不美观)

4. Myeclipse(不推荐,收费且操作过于复杂且UI简单,界面不美观)

5. SublimeText(推荐,功能强大且UI美观简洁,支持多种编程语言)

6. Typora(推荐,高度支持Markdown语言便于书写代码,支持多种编程语言)

7. IDEA(墙裂推荐,Jetbrains旗下最出名的一款IDE也是目前众多公司采用的软件)

1.2.3 Java编程必知

1.JDK1.5之后不需要设置ClassPath,之前的版本需要额外设置ClassPath

2.JDK=JRE+开发工具集(java.exe、javac.exe)、JRE=JVM+J2SE标准核心类库

3.JDK(Java Development Kit)Java开发工具,用来开发Java程序是开发人员必备

4.JRE(Java Runtime Environment)Java运行环境,用来运行开发好的Java程序是使用人员必备

5.JVM(Java Virtual Machine)Java虚拟机,用来加载运行字节码文件是跨平台实现的基础和保障

1.3 Java实操

1.3.1 JDK实操配置

JDK下载(Oracle官网或百度搜索Oracle)
1.打开浏览器(建议使用chrome或Edge,其它浏览器可能会出现有问题)
|
2.浏览器的地址栏中输入Oracle官网网址或百度中搜索JDK下载进行Oracle官网(Oracle官网网址:www.oracle.com)
|
3.选择Products
|
4.网页往下拉,选择Java
|
5.网页往下拉,选择Oracle JDK
|
6.网页往下拉,选择Java8(常用的系统为Windows)
|
7.根据自己的操作系统位数下载JDK(常用的操作系统位数为64bit)
|
8.登录Oracle账号会自动开始下载JDK(若无Oracle账号,请先注册Oracle账号再登录Oracle账号)
JDK配置(JAVA_HOME及Path环境变量配置)
1.打开此电脑(win7为我的电脑)
|
2.鼠标右键选择属性
|
3.选择高级系统设置
|
4.选择高级中的环境变量
|
5.选择系统环境变量中的新建
|
6.变量名为:JAVA_HOME、变量值为JDK安装目录(默认路径:C:\ProgramFiles\Java\jdk1.8.0_341)
|
7.选择系统环境变量Path并编辑它(若无则新建,一般Windows默认都会自带)
|
8.变量值为新增的%JAVA_HOME%\bin(若为Win7需要在上述变量值后面多加上一个;)

1.3.2 Java实操编写

低级工具开发(记事本)
1.新建记事本文件
|
2.在记事本编写Java代码
|
3.保存为后缀名为.java的Java源文件(修改为ANSI编码格式可避免中文乱码)
|
4.进入DOS(DOS–Disk Operating System磁盘操作系统,即MS早期的PC上的操作系统)
|
5.使用javac命令编译Java源文件(若无代码错误和步骤错误就会生成对应的.class字节码文件)
|
6.使用Java命令运行字节码文件(字节码被加载到JVM中运行,字节码文件是跨平台性的保障)
低级工具开发(SublimeText)
1.新建SublimeText文件
|
2.在SublimeText中编写Java代码
|
3.保存为后缀名为.java的Java源文件(修改为ANSI编码格式可避免中文乱码)
|
4.进入DOS(DOS–Disk Operating System磁盘操作系统,即MS早期的PC上的操作系统)
|
5.使用javac命令编译Java源文件(若无代码错误和步骤错误就会生成对应的.class字节码文件)
|
6.使用Java命令运行字节码文件(字节码被加载到JVM中运行,字节码文件是跨平台性的保障)
集成开发环境开发(IDEA)
1.打开IDEA
|
2.新建工程
|
3.新建Java类
|
4.编写Java代码
|
5.运行Java代码

二、Java语法

2.1 基本语法

2.1.1 Java变量

1.变量的定义:可改变的量,即可对同一个变量多次赋值
2.变量的作用:用来接收程序的数据(实质是一个内存空间即容器)
3.变量的声明:变量数据类型 变量名(标识符) = 变量值;(也是变量三要素的形式)
4.变量的注意:根据注意事项更加合理化地编写自己的代码(代码的规范性便于后期的分工合作)

4.1 数据类型和变量名必须有
4.2 变量值可有可无,若有为一段式变量声明,若无为两段式变量声明
4.3 一段式的变量声明:变量数据类型 变量名 = 变量值;(int num = 1;)
4.4 两段式的变量声明:变量数据类型 变量名; 变量名 = 变量值;(int num;num = 1;)

5.变量的命名:符合命名规范、遵守关键字规定、遵守保留字规定

5.1 规范遵守或不遵守,但规定必须遵守否则报错
5.2 命名规定中要求变量名不可以和Java关键字冲突即相同
5.3 命名规定中要求虽然变量名不限制长度,但能表达清楚命名的含义即可
5.4 命名规定中要求除开头外后面的部分可以有字母、下划线、美元符$以及数字组成
5.5 命名规范中要求变量名单个单词时英文字母全部小写(多单词时采用驼峰式命名),如:showNum
5.6 命名规范中要求变量名起名尽量见名思意、简单明了、一目了然(尽量不使用拼音拼写而用英文单词)
5.7 命名规定中要求区分大小写,即使由同一个单词命名但若有个别字母有大小写区别则产生两个不同的变量
5.8 命名规定中要求必须以字母、下划线、美元符开头(以美元符号开头命名的变量虽能编译通过但不建议使用,中文也可作为命名开头且编译也能通过但不建议使用)

6.变量的分类:成员变量、局部变量、全局变量
7.变量的用途:循环、方法、类、形参列表(形参)
8.变量的示例:变量的Java代码可直接进行编译运行

/**
 * @author CF.FC
 * @date 2022/11/20 20:03
 * @description: Variable
 */

// 定义一个叫做Variable(变量)的共有类
public class Variable {
    // 定义主程序的主方法入口(万年不变的格式)
    public static void main(String[] args) {
        // 定义一个整型变量num且值为1
        int num = 1;
        // 输出整型变量num的值
        System.out.println("我是一个整型数字变量num,我的值为:" + num);
    }
}

2.1.2 Java数据类型

1.数据类型的定义:给每个在内存中的数据具体的类型以便区分
2.数据类型的作用:便于每种数据的区分保证Java程序的健壮性(稳定性)
3.数据类型的分类:基本数据类型(四类八种)、引用数据类型(接口、数组、类)

Java基本数据类型
boolean:

boolean数据类型表示一位的信息;
只有两个取值:true 和 false;
这种类型只作为一种标志来记录 true/false 情况;
默认值是 false;
例子:boolean one = true。
char:

char 类型是一个单一的 16 位 Unicode 字符;
最小值是 \u0000(十进制等效值为 0);
最大值是 \uffff(即为 65535);
char 数据类型可以储存任何字符;
例子:char letter = 'A';。

3.1 byte字节整型
byte默认值:0
byte包装类:Byte
byte的定义:字节型整数
byte的大小:8位即一字节
Byte的方法:parseByte()、toString()
Byte的常量:MAX_VALUE、MIN_VALUE
byte的表示:以二进制补码表示的有符号的整数
byte的取值:-128(负二的七次方)~127(正二的七次方减一因为有0)
byte的作用:用在大型数组中代替整数以节约空间,因为 byte 变量占用的空间只有 int 类型的四分之一
byte的接收:整型数字(正数、负数、0)、单个字符(单引号引起来)、进制数(0b、00、0x),上述三者的单独算术表达式或混合算术表达式

3.2 short短整型
short默认值:0
short包装类:Short
short的定义:短整型整数
short的大小:16位即两字节
Short的方法:parseShort()、toString()
Short的常量:MAX_VALUE、MIN_VALUE
short的表示:以二进制补码表示的有符号的整数
short的取值:-32768(负二的15次方)~32767(正二的15次方减一因为有0)
short的作用:用在大型数组中代替整数以节约空间,因为short变量占用的空间只有 int 类型的二分之一
short的接收:整型数字(正数、负数、0)、单个字符(单引号引起来)、进制数(0b、00、0x),上述三者的单独算术表达式或混合算术表达式

3.3 int整型
int默认值:0
int包装类:Integer
int的定义:整型整数
int的大小:32位即四字节
Integer的方法:parseInteger()、toString()
Integer的常量:MAX_VALUE、MIN_VALUE
int的表示:以二进制补码表示的有符号的整数
int的取值: -2,147,483,648(负二的31次方)~2,147,483,647(正二的31次方减一因为有0)
int的作用:一般地整型变量默认为 int 类型,相对于长整型更加节约空间,因为int变量占用空间只有long类型的一半
int的接收:整型数字(正数、负数、0)、单个字符(单引号引起来)、进制数(0b、00、0x),上述三者的单独算术表达式或混合算术表达式

3.4 long整型
long默认值:0L
long包装类:Long
long的定义:长整型整数
long的大小:64位即八字节
Long的方法:parseLong()、toString()
Long的常量:MAX_VALUE、MIN_VALUE
long的表示:以二进制补码表示的有符号的整数
long的取值: -9,223,372,036,854,775,808(负二的63次方)~9,223,372,036,854,775,807(正二的63次方减一)
long的作用:主要使用在需要比较大整数的系统上,"L"理论上不分大小写(但若写成"l"容易与数字"1"混淆,不易分辩所以最好大写,因为与int混淆所以要加后缀进行区分)
long的接收:整型数字(正数、负数、0)、单个字符(单引号引起来)、进制数(0b、00、0x),上述三者的单独算术表达式或混合算术表达式

3.5 float浮点型
float默认值:0.0f
float包装类:Float
float的定义:符合IEEE 754标准的单精度浮点数
float的大小:32位即四字节
Float的方法:parseFloat()、toString()
Float的常量:MAX_VALUE、MIN_VALUE
float的接收:浮点型数字(正数、负数、0.0)
float的表示:以二进制补码表示的有符号的整数
float的取值: -1.175494351E–38~3.402823466E+38
float的作用:浮点数不能用来表示精确的值如货币,因与默认的double双精度浮点型混淆所以要加后缀区分,在储存大型浮点数组时可节省内存空间,"f"理论上不分大小写(但若写成"l"容易与数字"1"混淆,不易分辩所以最好大写,因为与int混淆所以要加后缀进行区分)

3.6 double浮点型
double默认值:0.0d
double包装类:Float
double的定义:符合IEEE 754标准的双精度浮点数
double的大小:64位即八字节
double的方法:parseFloat()、toString()
double的常量:MAX_VALUE、MIN_VALUE
double的接收:浮点型数字(正数、负数、0.0)
double的表示:以二进制补码表示的有符号的整数
double的取值: -1.175494351E–38~3.402823466E+38
double的作用:浮点数的默认类型为 double 类型,浮点数不能用来表示精确的值如货币,因与默认的float单精度浮点型混淆所以要加后缀区分(也可不加后缀d或D),"d"理论上不分大小写(但若写成"l"容易与数字"1"混淆,不易分辩所以最好大写,因为与int混淆所以要加后缀进行区分)

4.数据类型的命名:按照关键字的书写方式进行书写(英文单词的字母全部都小写)
5.数据类型的用途:类、方法、接口

2.1.3 Java流程控制

1.流程控制的定义:控制程序运行的顺序
2.流程控制的作用:使得程序按照实际的需求进行运行
3.流程控制的分类:顺序结构(默认)、选择结构(if、if-else、else if)、循环结构(while、for)

选择结构

3.1 if条件选择
if的定义:一个 if 语句包含一个布尔表达式和一条或多条语句
if的语法:if(布尔表达式){//如果布尔表达式为true将执行的语句;}
if的特点:如果布尔表达式的值为 true,则执行 if 语句中的代码块,否则执行 if 语句块后面的代码

3.2 if-else条件选择
if-else的定义:if 语句后面可以跟 else 语句
if-else的语法:if(布尔表达式){//如果布尔表达式的值为true将执行的语句;}else{//如果布尔表达式的值为false将执行的语句;}
if-else的特点:若布尔表达式的值为true则执行 if 中的代码块,若布尔表达式的值为 false则执行else中的语句块

3.3 else if条件选择
else if的定义:if 语句后面可以跟 else ifelse 语句,这种语句可以检测到多种可能的情况。
else if的语法:if(布尔表达式 1){//如果布尔表达式 1的值为true执行代码}else if(布尔表达式 2){//如果布尔表达式 2的值为true执行代码}else if(布尔表达式 3){//如果布尔表达式 3的值为true执行代码}else {//如果以上布尔表达式都不为true执行代码}
else if的特点:
1.if语句至多有1else语句且else语句在所有的else if语句之后
2.if语句可以有若干个else if语句它们必须在else语句之前,一旦其中一个else if语句检测为true,其他的 else if以及else语句都将跳过执行

3.4 switch case条件选择
switch case的定义:switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
switch case的语法:switch(expression){case value ://语句break; //可选case value ://语句break; //可选//你可以有任意数量的case语句default : //可选//语句}
switch case的特点:
1.switch语句可以拥有多个case语句
2.case后面跟一个要比较的值和冒号
3.case语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量
4.switch case执行时一定会先进行匹配,匹配成功返回当前case的值,再根据是否有break判断是否继续输出或是跳出判断
5.switch语句中的变量类型可以是: byteshortintchar(从JavaSE 7开始,switch支持字符串String类型,同时case标签必须为字符串常量或字面量)
6.switch语句可以包含一个default分支该分支一般是switch语句的最后一个分支(可以在任何位置,但建议在最后一个),default在没有case语句的值和变量值相等的时候执行default分支不需要break语句
7.当变量值与case语句的值相等时case语句之后的语句开始执行,直到break语句出现才会跳出switch语句、当遇到break语句时switch语句终止程序跳转到switch语句后面的语句执行,case语句不必须要包含 break语句,若无break语句出现程序会继续执行下一条case语句直到出现break语句


循环结构

3.5 while循环
while的定义:重复做某事(若不满足条件则不能进入循环)
while的语法:while(布尔表达式) {循环的语句;}
while的特点:只要布尔表达式为true循环就会一直执行下去(死循环的特点)

3.6 do-while循环
do-while的定义:重复做某事(即使不满足条件循环至少也会执行一次)
do-while的语法:do {//代码语句}while(布尔表达式);
do-while的特点:布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了,若布尔表达式的值为true则语句块一直执行直到布尔表达式的值为false

3.7 for循环
for的定义:重复做某事(for循环执行的次数是在执行前就确定了)
for的语法:for(变量初始化; 布尔表达式; 迭代条件) {//代码语句}
for的特点:最先执行初始化步骤(可声明为一种类型也可初始化一个或多个循环控制变量或空语句),然后检测布尔表达式的值(若为true则循环体被执行,若为false则循环终止),接着开始执行循环体后面的语句,执行一次循环后更新循环控制变量再次检测布尔表达式,循环往复地执行上面的过程

3.8 增强型for循环
增强型for循环的定义:Java5引入了一种主要用于数组的增强型for循环
增强型for循环的语法:for(声明语句 : 表达式){//代码句子}
增强型for循环的特点:声明语句为声明新的局部变量该变量的类型必须和数组元素的类型匹配,其作用域限定在循环语句块,其值与此时数组元素的值相等;表达式为要访问的数组名或是返回值为数组的方法

4.流程控制的示例

/**
 * @author CF.FC
 * @date 2022/11/20 22:48
 * @description: ProcessControl
 */

// 定义一个叫做ProcessControl(流程控制)的公有的类
public class ProcessControl {
    // 定义主程序的主方法入口(万年不变的格式)
    public static void main(String[] args) {
        // 定义一个整型变量ifNum并赋值为1,以便后面的if进行条件判断
        int ifNum = 1;
        // 定义一个if条件结构并进行条件判断(判断条件1>0的结果为真)
        if (ifNum > 0) {
            // 只有条件为真时才执行此语句否则不执行且只会执行一次条件为真的语句块(此处条件为真所以会执行此语句输出以下语句)
            System.out.println("因为布尔表达式1>0的结果为真,所以你能看见我!");
        }
        // 定义if结构并进行条件判断(判断条件1<0的结果为假)
        if (ifNum < 0) {
            // 只有条件为真时才执行此语句否则不执行且只会执行一次条件为真的语句块(此处条件为假所以不会执行此语句也不会输出以下语句)
            System.out.println("因为布尔表达式1<0的结果为假,所以你不能看见我!");
        }

        // 定义一个整型变量elseNum并赋值为2,以便后面的if进行条件判断
        int elseNum = 2;
        // 定义一个if-else条件结构并进行条件判断(判断条件2<1的结果为假)
        if (elseNum < 1) {
            // 只有条件为真时才执行此语句否则不执行且只会执行一次条件为真的语句块(此处条件为假所以不会执行此语句也不会输出以下语句)
            System.out.println("因为布尔表达式2<1的结果为假,所以你不能看见我!");
        } else { // 定义if-else结构并进行条件判断(判断条件2>1的结果为真)

            // 只有条件为真时才执行此语句否则不执行且只会执行一次条件为真的语句块(此处条件为真所以会执行此语句输出以下语句)
            System.out.println("因为布尔表达式2>1的结果为真,所以你能看见我!");
        }

        // 定义一个整型变量ifElseNum并赋值为3,以便后面的if、else if进行条件判断
        int ifElseNum = 3;
        // 定义一个else if条件结构并进行条件判断(判断条件3>2的结果为真)
        if (ifElseNum > 2) {
            // 只有条件为真时才执行此语句否则不执行且只会执行一次条件为真的语句块(此处条件为真所以会执行此语句输出以下语句)
            System.out.println("因为布尔表达式3>2的结果为真,所以你能看见我!");
        } else if (ifElseNum >= 2) { // 定义else if结构并进行条件判断(判断条件3>=2的结果为真)

            // 只有条件为真时才执行此语句否则不执行且只会执行一次条件为真的语句块(此处条件为真所以会执行此语句输出以下语句)
            System.out.println("因为布尔表达式3>=2的结果为真,所以你能看见我!");
        } else {
            // 只有条件为真时才执行此语句否则不执行且只会执行一次条件为真的语句块(此处条件为假所以不会执行此语句也不会输出以下语句)
            System.out.println("因为布尔表达式3<2的结果为假,所以你不能看见我!");
        }

        // 定义一个整型变量switchNum并赋值为4,以便后面的switch进行数值匹配进而执行条件判断
        int switchNum = 4;
        // 定义一个switch case条件结构并进行数值匹配进而执行条件判断(4==4匹配到值,判断条件为真)
        switch (switchNum) {
            case 4:  // 定义数值为4的分支
                System.out.println("因为整型变量switchNum的值为4与case后的数值4匹配,所以你能看见我是4"); // 因为数值匹配所以条件为真,所以执行以下代码输出结果
            case 3:  // 定义数值为3的分支
                System.out.println("因为整型变量switchNum的值为4与case后的数值4匹配且无break,所以你能看见我是3"); // 因为数值匹配所以条件为真且无break,所以执行以下代码输出结果
                break; // 跳出分支
            case 2:  // 定义数值为2的分支
                System.out.println("因为整型变量switchNum的值为4与case后的数值4匹配且有break,所以你不能看见我是2"); // 因为数值匹配所以条件为真且有break,所以不会执行以下代码也不会输出结果
            case 1:  // 定义数值为1的分支
                System.out.println("因为整型变量switchNum的值为4与case后的数值4匹配且有break,所以你不能看见我是1"); // 因为数值匹配所以条件为真且有break,所以不会执行以下代码也不会输出结果
            default: // 默认情况(除去上述所有条件的分支判断条件的总和)
                System.out.println("若上述的任何一个分支都无法和整型变量switchNum的值匹配,则你能看见我出现"); // 因为数值不匹配,所以执行以下代码输出结果
        }

        // 定义一个整型变量whileSum并赋值为0,以便后面进行循环次数的统计输出
        int whileSum = 0;
        // 定义一个整型变量whileNum并赋值为5,以便后面的while进行条件判断进而执行循环操作
        int whileNum = 5;
        // 定义一个while循环结构并进行条件判断进而执行循环操作(因为5>0所以判断条件的结果为真,且迭代条件为每次减一所以循环的次数为5次)
        while (whileNum > 0) {
            // 输出while每次循环的结果
            System.out.println("while循环第" + whileNum + "次的输出结果");
            // 循环的迭代条件,保证了循环的次数为5次,若无则形成死循环特别要注意此处
            whileNum--;
            // 累加统计循环的次数
            whileSum++;
        }
        // 输出while循环的总次数
        System.out.println("while循环的次数为:" + whileSum);

        // 定义一个死循环(慎用!因为会导致电脑性能的浪费)
        // while (true){
        // System.out.println("我是死循环即一直会重复做某件事而不停下来,就像是吃了炫迈一样一直炫!若要停下循环请点击红色方块按钮或者使用Ctrl+F2快捷键!");
        // }

        // 定义一个整型变量doWhileSum并赋值为0,以便后面进行循环次数的统计输出
        int doWhileSum = 0;
        // 定义一个整型变量doWhileNum并赋值为6,以便后面的do-while进行条件判断进而执行循环操作
        int doWhileNum = 6;
        // 定义一个do-while循环结构并进行条件判断进而执行循环操作(因为有do的存在,所以即使6<0判断条件的结果为假也会执行一次循环操作,所以循环的次数为1次)
        do {
            // 输出do-while每次循环的结果
            System.out.println("do-while循环第" + doWhileNum + "次的输出结果");
            // 循环的迭代条件
            doWhileNum--;
            // 累加统计循环的次数
            doWhileSum++;
        } while (doWhileNum < 0);
        // 输出do-while循环的总次数
        System.out.println("do-while循环的次数为:" + doWhileSum);

        // 定义一个整型变量whileSum并赋值为0,以便后面进行循环次数的统计输出
        int forSum = 0;
        // 定义一个for循环结构并进行条件判断进而执行循环操作(因为7>0所以判断条件的结果为真,且迭代条件为每次减一,所以循环的次数为7次)
        for (int forNum = 7; forNum > 0; forNum--) {
            // 输出for每次循环的结果
            System.out.println("for循环第" + forNum + "次的输出结果");
            // 累加统计循环的次数
            forSum++;
        }
        // 输出for循环的总次数
        System.out.println("for循环的次数为:" + forSum);
    }
}

2.2 核心语法

2.2.1 面向对象编程

面向对象语言的分类:Java、C++、C#
面向对象语言的特点:唯一性、分类性、继承性
面向对象语言的缩写:OOP(Object Oriented Programming)
面向对象语言的结构:多态、继承、封装、抽象、类、对象、实例、方法、重载

2.2.2 类

类的作用:类用来构成程序
类的语法:[类修饰符] class 类名{}
类的特点:类是对一组对象共性的抽取
类的表示:类使用class关键字进行标识
类的定义:类是一个模板,定义了一组对象
类名规范:类名首字母要大写(驼峰式命名法)
类的地位:类是面向对象编程(OOP)的基础
类的理解:类是用来描述一类对象的行为和状态
类的举例:动物是一个模板,根据这个模板可创建出很多的对象,比如:一条狗
类的实质:类在内存中并不存在,但根据类创建的实例对象却在内存中且可有无限多个
类的分类:抽象类、内部类、嵌套类、静态类、静态嵌套类、超类(父类、被继承类)、基类(子类、继承类)
类的变量:类可包含三种类型变量,其详细解释如下所示:

1.类变量
类变量可声明在类中或方法体外,但必须声明为static类型,一个类可以拥有多个方法

2.局部变量
在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后变量会自动销毁

3.成员变量
成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可被类中方法、构造方法和特定类的语句块访问

2.2.2 对象

对象的理解:对象有自己对应的状态和行为
对象的地位:对象是面向对象编程(OOP)的基础
对象实例化:类名 类类型变量的名称 = new 类对应的构造方法;
对象的举例:一条狗是一个对象,其状态有:颜色、名字、品种;其行为有:摇尾巴、叫、吃
对象的注意:在实例化对象时赋给类类型(引用数据类型)变量的对象可重复使用,在实例化对象时赋给基本数据类型变量的对象只能使用一次(一次性)
对象的定义:对象是类的一个实例(对象不是找个女朋友)有状态(表征)和行为(动作),其详细解释如下所示:

1.现实世界中每一个现实对象都有自己对应的状态和行为,对比软件世界中每一个软件对象也有状态和行为
2.软件对象的状态就是属性,软件对象的行为就是方法,在软件开发中方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成

三、Java单词

3.1 Java核心单词

3.1.1 Java保留字单词

goto跳转 const常量

3.1.2 Java关键字单词

其它常用的修饰符:静态static 抽象abstract 最终final
经常使用的关键字:类class、接口interface、、实现implements、继承extends、创建new
控制权限的修饰符:公有public(可跨包)、受保护protected(当前包可用)、私有private(当前类可用)

字节数据类型的关键字:字符型char
布尔数据类型的关键字:布尔型boolean
浮点数据类型的关键字:单精度浮点型float 双精度浮点型double
整型数据类型的关键字:字节整型byte 短整型short 整型int 长整型long

循环流程控制语句的关键字:循环结构while 循环结构do while 循环结构for   
条件流程控制语句的关键字:条件如果if 条件否则else 条件如果else if 条件匹配switch 条件分支case

返回、跳出、继续、默认的控制的关键字:默认default 跳出循环break 继续循环continue return返回  

truefalse假 空void

Oracle官网的关键字描述文档

3.2 常用单词

main主要 String字符串类 System系统 out输出 in输入 print打印 println换行打印 Scanner输入  
Byte字节类 Short短整型类 Integer整型类 Long长整型类 Float单精度浮点型类 Double双精度浮点型类 
Boolean布尔型类 Character字符型类

四、Java图形化

4.1 Java的swing包

4.1.1 Java的swing概览

swing的出现:swing在JDK1.2版本之后就出现了
swing的位置:swing位于javax包下即javax.swing
swing的简介:swing是一个用于开发Java应用程序用户界面的开发工具包
swing的基础:swing释义抽象窗口工具包(AWT Abstract Window Toolkit)为基础
swing的特点:丰富的组件、程序外观支持、可数据传递、易访问性API、部署支持灵活
swing的名词:GUI(Graphical User Interface)图形用户接口、JFC(Java Foundation Classes)爪哇基础类别,它是一个图形框架由awt、swing、Java 2D三者构成

4.1.2 Java的swing应用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过往已是曾经

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值