阅读目录

  • 1.初识Java
    • 1.Java创建历史
    • 2.Java 语言的主要特点:
    • 3.Java SE,Java EE,Java ME
    • 4.java编译与运行
    • 5.JDK介绍
    • 6.字节码介绍
    • 7.即时编译技术
    • 8.JVM
    • 9.垃圾回收机制
    • 10.配置jdk环境变量
    • 11.java文件命名
    • 12.文档注释标签语法。
  • 2.数据类型和运算符
    • 1.变量
    • 2.数据类型
    • 3.进制转换
    • 4.字符
    • 5.boolean类型
    • 6.数据类型转换
    • 7.关于Scanner
    • 8.运算符
    • 9.表达式的运算顺序
  • 3.相关练习重点题目
    • 1.两数交换(1)temp (2)a,b;a+=b;b = a-b(剩a);a-=b(剩b);(3)a = a^b; b =a^b(b^b^原a=原a);a = a^b(原a^原a^原b=原b);
    • 2.int a = 2;
    • 3.
    • 4.
    • 5.
    • 6.
    • 7.

1.初识Java

1.Java创建历史

Sun 公司(已被 Oracle 收购)于 1995 年 5 月推出了 Java 程序设计语言和 Java 平台。

2.Java 语言的主要特点:

以下是 Java 语言的主要特点

Java 语言是高级语言
Java 语言是简单的
Java 语言是面向对象的
Java 语言是分布式的
Java 语言是健壮的
Java 语言是安全的
Java 语言是平台无关的
Java 语言是可移植的
Java 语言是解释型的
Java 语言是高性能的
Java 语言是多线程的
Java 语言是动态的
Java 属于高级语言
相对于机器语言、汇编语言,Java 和 C++、C#、Python 等语言都被称之为高级语言,因为这些语言书写的代码越来越接近人类的自然语言。

面向对象
传统以 C 语言为代表的过程式编程语言以过程为中心,以算法为驱动(程序=算法+数据)。而面向对象编程语言则以对象为中心,以消息为驱动(程序=对象+消息)。Java 是典型的面向对象的语言,具体面向对象的概念和应用会在后面的课程中详细介绍。

平台无关
所谓 Java 语言是平台无关的语言,是指用 Java 编写的应用程序,编译成字节码文件(.class 后缀)后,不用修改就可在不同的软/硬件平台上运行。这得益于 Java 的虚拟机,这部分知识将在下一节详细介绍。

健壮性
Java 的健壮性有两个体现:

Java 丢弃了指针。这样可以杜绝内存的非法访问,虽然牺牲了程序员操作的灵活性,但对程序的健壮性而言,不无裨益。
Java 的垃圾回收机制。Java 的垃圾回收机制是 Java 虚拟机提供的管理内存的机制,用于在空闲时间以不定时的方式动态回收无任何引用的对象所占据的内存空间。

3.Java SE,Java EE,Java ME

Java 从诞生至今,主要衍生出了三个体系,即Java SE,Java EE,Java ME 。

Java SE(Java Standard Edition)
Java SE 是 Java 的基础,也是 Java 的核心。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 为 Java EE 提供了基础。

Java EE(Java Enterprise Edition)
Java EE 是在 Java SE 基础之上发展起来的 Java 企业版,包含了 Web 开发等企业级的开发技术,多用于 Web 系统的服务端开发。使用 Java EE 可以快速开发出安全、稳定、性能较高的大型系统。因此 Java EE 也是很多企业在技术选型阶段的一个重要考虑方向。

Java ME(Java Micro Edition)
在 Java 发展之初,Java 还有另一个分支 — Java ME。Java ME 可以用于一些嵌入式设备的 Java 程序开发。但随着时代的发展,Java ME 逐步走向没落,目前的应用范围也在逐步缩小。

4.java编译与运行

在整个 Java 程序的开发流程中,程序员最初是将代码写在后缀为 .java 的文件中(源码),之后再通过编译工具将 .java 文件转换 .class 文件(也称为字节码文件)。这个“转换”过程中,又可以细分为以下四个阶段:

词汇和语法分析:分析源码的执行逻辑,并将其绘制成一个抽象的语法树。
填写符号表:复杂的程序之间会彼此引用,而此阶段就会对这些引用关系做一些预处理工作。可以理解为,在此阶段会用一些符号来表示各个程序之间的关系。
注释处理:几乎所有的编程语言都包含程序和注释两部分,此阶段会对注释进行分析和归类。
生成字节码:根据前三个阶段的结果,最终将 .java 文件转换为 .class 文件。
字节码 .class 文件会被解释为机器码,进而在具体的系统平台上执行。以上过程如下所示。

5.JDK介绍

JDK(Java Development Kit,Java 开发工具包)是整个 Java 的核心。一个程序从源码到字节码需要编译,在 Java 中,这个编译动作由 JDK 提供的 javac 程序(或命令)来完成。JDK 还提供了执行程序 java、文档工具 javadoc 和反编译工具 javap 等使用工具。JDK 实际就是这些工具和 JRE 的合集。

什么是 JRE 呢?JRE(Java Runtime Environment,Java 运行环境)是 JVM(Java Virtual Machine,Java 虚拟机)和一些常用 API(Application Programming Interface,应用程序接口)的合集。

JVM 负责前文提到的解释并执行字节码。那什么是 API 呢?可以将 API 理解为是一些已经写好的、可以供我们直接使用的代码。举个例子,如果要编写一个排序算法该怎么办?除了自己一行一行的编写代码以外,还可以直接使用 JDK 中已经提供好的排序 API,直接使用 API 里的某一行代码就能帮助我们实现排序功能,是不是很方便呢?并且为了归类,API 通常是以“包”的形式体现的,例如 java.io 就是一个汇集了很多文件操作的包,而 java.lang 是一个汇集了很多程序基础操作的包。

综上,可以发现 JDK 包含了开发工具和 JRE,而 JRE 又包含了 JVM 和常用 API,如下图所示。因此,对于开发者而言,就只需要下载并安装 JDK,然后就可以开发并运行 Java 程序了。

6.字节码介绍

Java 的字节码是 Java 虚拟机执行的一种指令格式。

字节码解释过程
如下图所示,Java 字节码文件先后经过 JVM 的类装载器、字节码校验器和解释器,最终在操作系统平台上运行。具体各部分的主要功能描述如下。

类装载器。其主要功能是为执行程序寻找和装载所需要的类,就是把字节码文件装到 Java 虚拟机中。
字节码校验器。其功能是对字节码文件进行校验,保证代码的安全性。字节码校验器负责测试代码段格式并进行规则检查,检查伪造指针、违反对象访问权限或试图改变对象类型的非法代码。
解释器。具体的平台并不认识字节码文件,最终起作用的还是这个最重要的解释器,它将字节码文件翻译成所在平台能识别的东西。

7.即时编译技术

JVM 可判断某段字节码其是否属于使用频率较高的热点代码。如果是,就会将字节码文件转换出的本地机器码保存,以便下次直接执行机器码文件。这使得 Java 程序的执行效率得到很大的提高。

8.JVM

Java 能够拥有如此优秀的跨平台机制,主要归功于 JVM。

JVM 与跨平台机制
JVM 不是一台真实的机器,而是想象中的机器,通过模拟真实机器来运行 Java 程序。 既然是模拟出来的机器,JVM 看起来同样有硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java 程序运行在这个抽象的 Java 虚拟机上,它是 Java 程序的运行环境,也是 Java 最具吸引力的特性之一。

前面提到过,Java 语言的一个重要特点就是平台无关性,接下来将从原理上进一步说明为什么 Java 语言具有这样的平台无关性。实现 Java “一次编译,处处运行” 的关键就是使用了 Java 虚拟机。

例如,使用 C 语言开发一个类似计算器的软件,如果想要使这个软件在 Windows 平台上运行,则需要在 Windows 平台下编译成目标代码,这个计算器的目标代码只能在 Windows 平台上运行。而如果想让这个计算器软件能在 Linux 平台上运行,则必须在对应的平台下编译,产生针对该平台的目标代码,才可以运行。

但对于 Java 而言,则完全不是这样。用 Java 编写的计算器程序(.java 后缀)经过编译器编译成字节码文件,这个字节码文件不是针对具体平台的,而是针对抽象的 Java 虚拟机的,在 Java 虚拟机上运行。而在不同的平台上,会安装不同的 Java 虚拟机,这些不同的 Java 虚拟机屏蔽了各个不同平台的差异,从而使 Java 程序(字节码文件)具有平台无关性。也就是说,Java 虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行,具体原理如下图所示。

9.垃圾回收机制

在 C++ 中,程序结束运行之前,对象会一直占用内存,并在程序员明确释放之前不能将其所占内存分配给其他对象。

而 Java 的处理方式不同,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。作为初学者,可以简单的理解为,当一个对象不再被其他对象使用时,该对象就会成为一个等待被回收的垃圾对象。

Java 虚拟机提供了一个系统级线程(垃圾回收器线程),它自动跟踪每块被分配出去的内存空间,自动释放被定义成垃圾的内存。在一些书籍或文献中,垃圾回收器通常被称为 GC(Garbage Collection)。

垃圾回收机制能自动释放内存空间,减轻程序员编程的负担,这是 Java 虚拟机具有的一个显著优点。

10.配置jdk环境变量

配置 JAVA_HOME

点击新建,输入变量名为 JAVA_HOME,变量值为 C:\Program Files\Java\jdk1.8.0_121,点击确定。

配置 PATH (注意:PATH 变量不需要新建)

打开 Path 变量,在变量值最前加入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

配置 CLASSPATH

点击新建,输入变量名 CLASSPATH ,变量值,.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意:第一个分号前面有一个点)

11.java文件命名

一个源文件中最多只能有一个 public 类(但不是必须的)。如果源文件包含一个 public 类,则该源文件必须以 public 类名命名。本例中 HelloWorld 被声明为 public class 所以源文件必须命名为HelloWorld.java,如果去掉 public,那么源文件可以采用别的命名。

Java 程序的,它有固定的书写格式:

public static void main(String[] args){…}

一个程序只能有一个 main() 方法,否则 Java 虚拟机不知道从哪个main()方法开始运行

12.文档注释标签语法。

@author,位置:类,标明开发该类模块的作者
@version,位置:类,标明该类的版本。
@see,位置:类、属性、方法,说明相关主题。
@param,位置:方法,对方法中某参数的说明。
@return,位置:方法,对方法返回值的说明。
@exception,位置:方法,对方法可能抛出的异常进行说明。

2.数据类型和运算符

1.变量

对于内存而言,type varName 是声明变量,相当于根据数据类型向内存申请一块空间,而 =value 相当于把值放到这个内存空间中。例如 int stuAge = 22(省略分号,下同),可以拆分成 int stuAge 和 stuAge = 22 两条语句,其中 int stuAge 相当于向内存申请一块可以存储 int 型变量的空间(实际为 4 个字节,32 位),而 stuAge = 22 相当于把 22 这个数字放到了这块内存空间中,接下来还可以通过 stuAge = 27 这条语句把 27 这个数字放到刚才的内存空间中替换了原来的 22。

成员变量定义在类的内部、方法的外部(可以理解为和方法平行),其作用域从变量定义位置起到类结束。而局部变量是在方法内部(含语句块)定义的变量(包括前面说到的参数),其作用域从变量定义位置起到方法(含语句块)结束。对于 Java 而言,类的外面不能有变量的声明。

2.数据类型

3.进制转换

Java 整型字面值常量有以下 4 种表示形式。

十进制整数,例如 12,-127,0。
八进制整数,以 0 开头,例如 014(对应于十进制的 12)。
十六进制整数,以 0x 或 0X 开头,例如 0XC(对应于十进制的 12),0XA5(对应于十进制的 165)。
自 JDK7 以后,还可以用 0b 或 0B 开头,表示二进制整数,例如 0b11(对应于十进制的 3)。也可以将整数用Integer.toBinaryString()以二进制显示。
其他常见进制,虽然不能直接表示,但仍然可以通过 Java 中的一些 API 转换后得到。关于 API 的相关知识,大家也会随着学习的深入逐渐了解。

自 JDK7 以后,为了提高数字的可读性,还可以使用下划线(_)对数字分组,但要注意下划线不能出现在数字的首部或尾部,也不能出现在 0b 和 0x 左右、小数点左右、L 和 F 符号前。例如,在定义变量时,double d = 123_456.7_8 和 double d = 123456.78 是等价的。

Java 浮点类型字面值常量有以下两种表示形式。

十进制形式,例如 3.14,314.0,.314。
科学记数法形式,例如 3.14e2,3.14E2,100E-2。

4.字符

字符字面值常量为用单引号括起来的单个字符,因为 Java 使用 Unicode 编码,一个 Unicode 编码占 2 个字节,一个汉字也是占 2 个字节,所以 Java 中字符型变量可以存放一个汉字

Java 字符型字面值常量有以下 3 种表示形式。

用英文单引号括起来的单个字符,例如’a’、‘汉’。
用英文单引号括起来的十六进制代码值来表示单个字符,其格式为’\uXXXX’,其中 u 是约定的前缀(u 是 Unicode 的第一个字母),而后面的 XXXX 位是 4 位十六进制数,是该字符在 Unicode 字符集中的序号,例如 ‘\u0061’ 等价于 ‘a’。
某些特殊的字符可以采用转义符’‘来转换,转义符可以将其后面的字符转变为其他的含义,例如 ‘\t’ 代表制表符,’\n’ 代表换行符,’\r’ 代表回车符等。

5.boolean类型

Java 中的布尔型(boolean)可以表示真或假,只允许取值 true 或 false(不可以用 0 或非 0 的整数替代 true 和 false,这点和 C 语言不同)

6.数据类型转换

编写 Java 程序时,经常涉及数据类型转换,我们可以将其分为 3 类:基本数据类型转换、字符串与其他数据类型转换、其他实用数据类型转换。此处介绍基本数据类型转换,其中 boolean 类型不可以和其他数据类型互相转换。整型、字符型、浮点型的数据在混合运算中可相互转换并遵循以下原则。

容量小的类型可自动转换成容量大的数据类型,如下图所示。

byte、short、char 参与运算时会被自动转换为 int 类型。

容量大的数据类型转换成容量小的数据类型时,需要加上强制转换符,但可能造成精度降低或溢出,使用时需要格外注意。

有多种类型的数据混合运算时,系统首先自动地将参与运算的变量或字面值常量转换成容量最大的数据类型,然后再进行计算。

7.关于Scanner

Scanner(System.in) 的对象存在多个是无意义的,而且作为标准输入流也无需去区分不同的场合用什么不同的 Scanner,所以完全可以将 Scanner 对象定义为全局的对象,并实现相关的方法在不再需要它的地方执行 close() 方法关闭标准输入流。

8.运算符

Java 语言支持如下运算符。

算术运算符:+、-、、/、%、++、–。
关系运算符:>、<、>=、<=、==、!=。
赋值运算符:=、+=、-=、
=、/= 等。
逻辑运算符:!、&&、|| 等。
位运算符:~、&、|、^、>>、<<、>>>(无符号右移)。
算术运算符
从参与运算的因子的数量,可以将算术运算符分为以下 3 类。

单目运算符:+(取正)、-(取负)、++(自增 1)、–(自减 1)。
双目运算符:+、-、*、/、%(取余)。
三目运算符:(表达式 1)?(表达式 2):(表达式 3),当表达式 1 的结果为真时,整个运算的结果为表达式 2,否则为表达式 3,该运算符是 Java 语言唯一一个三目运算符,常被使用,需要掌握。

9.表达式的运算顺序

Java 表达式按照运算符的优先级从高到低的顺序进行运算,优先级相同的运算符按照事先约定的结合方向进行运算。运算符的优先级和结合性如下图所示。需要注意的是,程序员在编写代码时,是不会去记运算符的优先级的,当不确定运算符的优先级时,程序员通常的做法就是对先运算的部分加上小括号,保证此运算优先执行。

3.相关练习重点题目

1.两数交换(1)temp (2)a,b;a+=b;b = a-b(剩a);a-=b(剩b);(3)a = a^b; b =ab(bb^原a=原a);a = ab(原a原a^原b=原b);

2.int a = 2;

a+=a*=a;

执行后,变量 a 的值为?

a = a + (a*a) = 2+4 =6

3.

int a = 4;

int b = a>>1 | a<<1;

执行后,变量 b 的值为?

右移/左移运算不改变原来变量的值 a不变

4.

Java 中以下代码 int a = ~3; 执行后,变量 a 的值为?补码运算

5.

int a = 1;

boolean b = (a>0) || (a++>1);

执行后,变量 a 和 b 的值为?

短路或,左边true不会执行右边。

6.

Java 中数据类型分为?基本数据类型和引用数据类型

7.

Java 中以下代码正确的有哪些?float a = 1.23;错 float a = 1;对 float a = (float)1.23;对 double a= 1.23f对

float可以赋值为整数(不加f)和浮点数(必须加f) double类型可以不加后缀,也可以加d或f

2网课内容总结 1~2章节相关推荐

  1. iPhone、iPad明年或采用USB-C接口;虎牙回应央视点名网课内容充斥广告;Rust 1.44.0 发布| 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...

  2. PHP在线网课问答题库搜索,选修课题库,大学生网课搜题神器,超星网课搜题软件,知到章节搜题app...

    热固性塑料压缩成型时间与交联度直接相关,交联度越高产品性能越好. Which of the following is the largest borrower in the money markets ...

  3. 新农慕课python答案第八周_2021年智慧树Python语言应用第五单元章节测试答案选修课网课慕课答案...

    2021年智慧树Python语言应用第五单元章节测试答案选修课网课慕课答案 更多相关问题 前摄抑制和倒摄抑制现象可以作为证据支持某种遗忘理论,这一遗忘理论是A.衰退说B.干扰说C.压抑说D 2013年 ...

  4. nina数据库的采样频率_知到奇异的仿生学第三单元章节测试答案选修课网课慕课答案...

    知到章节单选(3分) 下列关于泥石流等地质灾害的说法正确的是 参考答案如下 单选(2分) 128 个用户共享 4.096 Mbps 链路,奇异使用TDM.当每个用户轮流使用时,以全速度发送8位.用户需 ...

  5. python语言程序设计网课答案-真不错!大学慕课Python语言程序设计章节测试答案...

    2020年智慧树网课答案为您详细解读azMisb真不错!大学慕课Python语言程序设计章节测试答案的详情,Research Essay是国外大学常见的Assignment形式,Research Es ...

  6. 手机app编程控制重力传感器_2020年智慧树APP可编程控制器技术第四单元章节测试网课答案大学课后答案...

    2020年智慧树APP可编程控制器技术第四单元章节测试网课答案大学课后答案更多相关问题 [单选] 无痛性血尿多见于()[多选] 当关键要素不完整时,系统联动相关交易提示柜员和客户进行治理.关键要素包括 ...

  7. pdfbox 按章节读取_2020年智慧树APP微生物与健康第五单元章节测试网课答案大学课后答案...

    2020年智慧树APP微生物与健康第五单元章节测试网课答案大学课后答案 更多相关问题 [多选题]<人性的弱点>孔子说:"见贤思齐焉,见不贤而内自省也".当你读到这句话时 ...

  8. 智慧树知到网课中国马克思主义与当代课后所有章节测试答案

    智慧树知到网课<中国马克思主义与当代>课后章节测试答案 绪论 第一章:进入新时代的中国与当代世界 第二章:当代世界经济 第三章:当代世界政治 第四章:当代世界文化 第五章:当代社会问题 第 ...

  9. 网课答案php源代码,知到网课答案WEB程序设计(PHP)2020章节测试答案

    知到章节苗属给动种疫物接于(. 在行政处序中易程罚简,网课当事人享权利有的有(. 答案答案公民关申织对政机下列行政行为向行或其可以不服的有具体请复他组议的原因法人属于.哪条中毒血性弧菌不是表现特点副溶 ...

最新文章

  1. 深度学习:Opencv的BlobfromImage如何工作
  2. 黑莓blackberry手机刷ROM 的详细教程
  3. 为什么我们会拖延? (TED)
  4. Apache Camel 3.1 –即将推出更多骆驼核心优化
  5. JDK 13中的JEP 355文本块
  6. 模态识别在计算机视觉应用,相关性学习在计算机视觉任务中的研究与应用
  7. 笔记----Linux中pt_regs结构体
  8. syscall 系统调用陷入_系统调用深度剖析(上)
  9. 20145226夏艺华 JAVA预备作业1
  10. checkbox是否被选中
  11. 兼容安卓和苹果的滚动
  12. http请求中简单的签名验证
  13. setUp和tearDown
  14. win10蓝屏提示重新启动_神器 | 那些好用到爆的win10修复优化软件,一键解决你的麻烦(一)...
  15. python学习(二十一)
  16. 31-基于单片机的校内小巴士仿真
  17. fluent在运行时改变重力方向方法总结
  18. 577,反转字符串中的单词
  19. python explode(0、0.2、0、0)_Python 2
  20. 鼠标属于计算机设备嘛,计算机中鼠标器属于什么设备

热门文章

  1. python之PIL 小图拼接成大图
  2. Chrome浏览器升级配置
  3. 计算机开源期刊电子和计算机方向的
  4. mysql server5.7.17安装_Windowsserver2008r2下MySQL5.7.17winx64安装版配置方法图文教程
  5. 织梦实现链接提交给百度 主动推送的实例操作
  6. Unix,Linux和Windows
  7. python飞机大战计分代码_Python项目实战-飞机大战
  8. 我在公司的日子(1)
  9. SRG2200 虚拟服务器6,华为SRG2200路由器如何做内网映射?
  10. linux运行qsql,linux系统下怎么在终端运行sql语句