系列文章目录
第一章 华清远见--重庆中心-JAVA基础阶段技术总结
第二章
文章目录
前言
本篇文章用于本人对于java学习的归纳和总结。
提示:以下是本篇文章正文内容,下面案例可供参考
一、关于java
1.发展历程
- 作为Java语言创始人之一的James Gosling(詹姆斯·高斯林),被称为Java之父
- Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。
- 1996年1月,Sun公司发布了Java的第一个开发工具包(JDK 1.0)
-
2009 年 Oracle 以超过 70 亿美元交易总值收购了 Sun
- Java 由于采用JVM(Java 虚拟机)可运行于多个平台,如 Windows, Mac OS 及其他多种 UNIX 版本的系统。
- Java是一门跨平台、“半解释半编译”的“面向对象”语言。
2.编程开发
JDK(Java Development Kit)称为Java开发包或Java开发工具,是一个编写Java的Applet小程序和应用程序的程序开发环境。
把Java API类库中的Java SE API子集和Java虚拟机这两部分统称JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。
JRE是个运行环境,JDK是个开发环境。 JRE 加上编译开发工具 则为 JDK
-
JDK --- Java Development Kit ( Java 开发工具包)
-
JRE --- Java Runtime Environment ( Java 运行环境)
-
JVM --- Java Virtual Machines ( Java 虚拟机)
3.java架构
- Java SE(Java Platform Standard Edition,Java 平台标准版)以前称为 J2SE,它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。
- Java EE(Java Platform Enterprise Edition,Java 平台企业版)以前称为 J2EE。Java EE 是在 Java SE 基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(Service Oriented Architecture,SOA)和 Web 2.0 应用程序。
- Java ME(Java Platform Micro Edition,Java 平台微型版)以前称为 J2ME。Java ME 包括灵活的用户界面、健壮的安全模型、丰富的内置网络协议以及对可以动态下载的联网和离线应用程序。
4.java的特点
Java 语言是一种分布式的面向对象语言,具有面向对象、平台无关性、简单性、解释执行、多线程、安全性等很多特点
5.java语言需要先编译,然后解释执行
- 程序员编写的Java源文件(.java)首先要经过编译,生成字节码文件(.class)。
- Java程序的运行需要JVM的支持。JVM是一个软件,安装在操作系统中,为字节码文件提供运行环境。
编辑.java源文件—>javac命令编译—>生产.class文件—>java命令由JVM解释运行
二、java的安装以及环境配置
1.Java JDK下载与安装
在安装 JDK 之前,首先要到 Oracle 网站获取 JDK 安装包。JDK 安装包被集成在 Java SE 中,因此下载 Java SE 即可。根据自己设备选择对应的版本。
2.Java JDK环境变量配置
1.从桌面上右击“计算机”图标,从快捷菜单中选择“属性”命令,在打开的“系统属性”对话框中单击“环境变量”按钮
2.点击“新建系统变量”在“变量名”文本框中输入 JAVA_HOME,在“变量值”文本框中输入 JDK 的安装路径
3.“系统变量”列表框中双击 Path 变量,进入“编辑系统变量”对话框。在“变量值”文本框的最前端添加.;%JAVA__HOME%\bin;
内容
4.JDK 安装和配置完成后,可以测试其是否能够正常运行。选择“开始”|“运行”命令,在打开的“运行”对话框中输入 cmd 命令,按 Enter 键进入到 DOS 环境下。
5.在命令提示符后输入并执行java -version
命令,系统如果输出 JDK 版本信息,说明 JDK 已经配置成功。
三、在记事本中编写第一个java程序
1.程序代码: HelloWorld.java , 源文件
public class HelloWord {
//主方法,是每个程序的入口函数,只有一个,如果没有将无法正常执行。
public static void main(String[] args) {
System.out.println("Hello java");
}
}
下面对源代码中的重要组成元素进行简单介绍。
- 关键字 public 表示访问说明符,表明该类是一个公共类,可以控制其他对象对类成员的访问。
- 关键字 class 用于声明一个类,其后所跟的字符串是类的名称。
- 关键字 static 表示该方法是一个静态方法,允许调用 main() 方法,无须创建类的实例。
- 关键字 void 表示 main() 方法没有返回值。
- main() 方法是所有程序的入口,最先开始执行。
- “/*” “*/”之间的内容和以“//”开始的内容为 Java 程序的注释。
四、java基础
基本语法
一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。
- 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
- 类:类是一个模板,它描述一类对象的行为和状态。
- 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
- 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
注意事项
编写 Java 程序时,应注意以下几点:
- 大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
- 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
- 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
- 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
- 主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
java标识符
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:
- 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
- 关键字不能用作标识符
- 标识符是大小写敏感的
- 合法标识符举例:age、$salary、_value、__1_value
- 非法标识符举例:123abc、-salary
Java修饰符
像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
- 访问控制修饰符 : default, public , protected, private
- 非访问控制修饰符 : final, abstract, static, synchronized
Java 变量
Java 中主要有如下几种类型的变量- 局部变量
- 类变量(静态变量)
- 成员变量(非静态变量)
Java 数组
数组是储存在堆上的对象,可以保存多个同类型变量。
Java 关键字
下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。
类别 | 关键字 | 说明 |
---|---|---|
访问控制 | private | 私有的 |
protected | 受保护的 | |
public | 公共的 | |
default | 默认 | |
类、方法和变量修饰符 | abstract | 声明抽象 |
class | 类 | |
extends | 扩充,继承 | |
final | 最终值,不可改变的 | |
implements | 实现(接口) | |
interface | 接口 | |
native | 本地,原生方法(非 Java 实现) | |
new | 新,创建 | |
static | 静态 | |
strictfp | 严格,精准 | |
synchronized | 线程,同步 | |
transient | 短暂 | |
volatile | 易失 | |
程序控制语句 | break | 跳出循环 |
case | 定义一个值以供 switch 选择 | |
continue | 继续 | |
do | 运行 | |
else | 否则 | |
for | 循环 | |
if | 如果 | |
instanceof | 实例 | |
return | 返回 | |
switch | 根据值选择执行 | |
while | 循环 | |
错误处理 | assert | 断言表达式是否为真 |
catch | 捕捉异常 | |
finally | 有没有异常都执行 | |
throw | 抛出一个异常对象 | |
throws | 声明一个异常可能被抛出 | |
try | 捕获异常 | |
包相关 | import | 引入 |
package | 包 | |
基本类型 | boolean | 布尔型 |
byte | 字节型 | |
char | 字符型 | |
double | 双精度浮点 | |
float | 单精度浮点 | |
int | 整型 | |
long | 长整型 | |
short | 短整型 | |
变量引用 | super | 父类,超类 |
this | 本类 | |
void | 无返回值 | |
保留关键字 | goto | 是关键字,但不能使用 |
const | 是关键字,但不能使用 |
注意:Java 的 null 不是关键字,类似于 true 和 false,它是一个字面常量,不允许作为标识符使用。
继承
在 Java 中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。
利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(sub class)。
接口
在 Java 中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。
接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。
五、java变量
1.1 什么是变量
1.2变量的定义
- 在变量声明时同时初始化:
- 变量类型 变量名字 = 初始值;
- 先声明变量,在第一次使用变量之前再对变量赋初值
- 未经声明的变量不能使用
- 如果多个变量的类型相同,可以在一条语句中声明,中间用逗号分隔。
- 变量的命名需要符合Java标识符语法要求
- -可以有字母,数字,”_”和”$”符组成 -首字符不能以数字开头
- -Java是大小写敏感的语言,命名变量时需要注意
- -不能使用Java保留字(Java语言规定好的,有特殊含义的字符:public static void…
- 中文可以作为变量名字,但是不推荐使用。
- Java变量命名最好能“见名知意”
- Java编程规范要求:变量的命名需要采用“驼峰命名法”,即:如果Java变量名字由多个 英语单词组成,除第一个单词首字母小写外,其他的单词,需要首字母大写,其余的字母小写。
1.3变量的访问
六、Java中的基本数据类型
类型名称 | 关键字 | 占用内存 | 取值范围 |
---|---|---|---|
字节型 | byte | 1 字节 | -128~127 |
短整型 | short | 2 字节 | -32768~32767 |
整型 | int | 4 字节 | -2147483648~2147483647 |
长整型 | long | 8 字节 | -9223372036854775808L~9223372036854775807L |
单精度浮点型 | float | 4 字节 | +/-3.4E+38F(6~7 个有效位) |
双精度浮点型 | double | 8 字节 | +/-1.8E+308 (15 个有效位) |
字符型 | char | 2 字节 | ISO 单一字符集 |
布尔型 | boolean | 1 字节 | true 或 false |
提示:char 代表字符型,实际上字符型也是一种整数类型,相当于无符号整数类型。
1)整数类型
Java 定义了 4 种整数类型变量:字节型(byte)、短整型(short)、整型(int)和长整型(long)。
名称 | 说明 |
---|---|
字节型(byte) | byte 类型是最小的整数类型。当用户从网络或文件中处理数据流时,或者处理可能与 Java 的其他内置类型不直接兼容的未加工的二进制数据时,该类型非常有用。 |
短整型(short) | short 类型限制数据的存储为先高字节,后低字节,这样在某些机器中会出错,因此该类型很少被使用。 |
整型(int) | int 类型是最常使用的一种整数类型。 |
长整型(long) | 对于大型程序常会遇到很大的整数,当超出 int 类型所表示的范围时就要使用 long 类型。 |
2)浮点类型
浮点类型是带有小数部分的数据类型,也叫实型。浮点型数据包括单精度浮点型(float)和双精度浮点型(double),代表有小数精度要求的数字。
注意:一个值要能被真正看作 float,它必须以 f(或 F)后缓结束;否则,会被当作 double 值。对 double 值来说,d(或 D)后缓是可选的。
3)布尔类型
布尔类型(boolean)用于对两个数值通过逻辑运算,判断结果是“真”还是“假”。Java 中用保留字 true 和 false 来代表逻辑运算中的“真”和“假”。因此,一个 boolean 类型的变量或表达式只能是取 true 和 false 这两个值中的一个。
在 Java 语言中,布尔类型的值不能转换成任何数据类型,true 常量不等于 1,而 false 常量也不等于 0。这两个值只能赋给声明为 boolean 类型的变量,或者用于布尔运算表达式中。
4)字符类型
Java 语言中的字符类型(char)使用两个字节的 Unicode 编码表示,它支持世界上所有语言,可以使用单引号字符或者整数对 char 型赋值。
一般计算机语言使用 ASCII 编码,用一个字节表示一个字符。
字符型变量的类型为 char,用来表示单个的字符
七、Java 运算符
算术运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下表列出了所有的算术运算符。
表格中的实例假设整数变量A的值为10,变量B的值为20:
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
- | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21 |
-- | 自减: 操作数的值减少1 | B-- 或 --B 等于 19 |
关系运算符
下表为Java支持的关系运算符
表格中的实例整数变量A的值为10,变量B的值为20:
运算符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
逻辑运算符
下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假
操作符 | 描述 | 例子 |
---|---|---|
&& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 |
赋值运算符
下面是Java语言支持的赋值运算符:
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A,C 与 A 同类型时等价于 C = C / A |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
条件运算符(?:)
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
variable x = (expression) ? value if true : value if false
八、程序结构
1.顺序结构
2.分支结构
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
if...else if 代码
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
3. 循环结构
3.1for循环
for(表达式1;表达式2;表达式3){
// 语句序列
}
表达式1:初始化表达式,负责完成循环条件的初始化
表达式2:循环条件表达式,值为boolean的表达式,指定循环条件
表达式3:循环后的操作表达式,负责修改变量,改变循环条件
语句0 ;
while(循环条件){
语句1 ;//循环体
}
语句2 ;
九、java数组
1.什么是数组
- 数组:相同数据类型的元素组成的集合
- 元素按线性顺序排列。所谓线性顺序是指除第一个元素外,每一个元素都有唯一的前驱元素; 除最 后一个元素外,每一个元素都有唯一的后继元素(“一个跟一个”),可以通过元素所在位置的顺序号 (下标)做标识来访问每一个元素(下标从0开始,最大到元素的个数-1)
2.2数组的使用
- 声明数组的语法: 数据类型[] 数组名 = new 数据类型[大小];
- 数组声明后的默认值 ------数组new之后,每个元素都有默认值。int,long默认值为0,double默认值为0.0,boolean 默认值为false,char默认值为空字符。
2.3数组的排序
- 冒泡排序:所谓的冒泡算法就是从左往右依次比较两个数大小,若前一个数大于后一个数,则两个数交换位置
- 数组排序函数sort Arrays.sort()——jdk提供的排序方法。
-
数组复制JDK 提供对数组进行复制的方法,即将一个数组(源数组)中的各个元素值复制到另一个数组(目 标数组)中:
-
数组扩容数组的长度在创建后不可以改变的。所谓 “ 扩展 ” 是指创建一个更大新数组,并将原有数组的内容复 制到其中。Jdk 提供了一个方法, Arrays.copyOf 可以实现数组的 “ 扩容 ”
2.4数组工具类Arrays
序号 | 方法和说明 |
---|---|
1 | public static int binarySearch(Object[] a, Object key) 用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。 |
2 | public static boolean equals(long[] a, long[] a2) 如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
3 | public static void fill(int[] a, int val) 将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
4 | public static void sort(Object[] a) 对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
测试
1.Java语言是1995年发布的,发布该语言的公司是:( A )D
A.Oracle B. Borland C. Microsoft D.Sun
2.编译和运行以下代码的结果为:A D
public class Hello{
public static void main(String s){
System.out.println("Hello");
}
}
A. 编译错误 B.运行输出 "Hello"
C.编译无错,但运行时指示没有定义构造方法
D.编译无错,但运行时指示没有正确定义main方法
5.下列程序编译或运行的结果是: A D
public static void main(String[] args) {
int num = 100;
for(int i=0;i<=100;i++) {
int num = 10;
}
System.out.println(num);
}
A. 10 B. 100 C. 201 D.编译出错
14.编译运行以下程序后,关于输出结果的说明正确的是:B C
public static void main(String args[ ]){
int x=4;
System.out.println(“value is “+ ((x>4) ? 99.9 :9));
}
A.输出结果为:value is 99.99 B.输出结果为:value is 9
C.输出结果为:value is 9.0 D.编译错误
17.下列代码段的输出结果是:A D
public static void main(String[] args) {
int x = 5;
boolean b1 = true;
boolean b2 = false;
if ((x == 4) && !b2)
System.out.print("l ");
System.out.print("2 ");
if ((b2 = true) && b1) // b2 = true,是赋值运算恒为真
System.out.print("3");
}
A. 2 B. 3 C. 1 2 D. 2 3
18.请看看列代码: D B
public void testIfA() {
if (testIfB("True")) {
System.out.println("True");
} else {
System.out.println("Not true");
}
}
public Boolean testIfB(String str) {
return Boolean.valueOf(str); //将字符串转化为对应的boolean类型数据
}
在JDK1.6版本中,调用执行testIfA方法,程序的结果是:
A.输出Not true B.输出True
C. if (testIfB("True")) { 行,编译错误
D. return Boolean.valueOf(str); 行,编译错误
22.下列代码段编译和运行的结果是:B D
public static void main(String[] args) {
for (int i = 0; i <= 10; i++) {
if (i > 6)
break;
}
System.out.println(i); //变量i已经超出它的作用域
}
A.输出 6 B.输出 7 C.输出 10 D.编译错误
总结
刚开始的java内容学习主要注重的是基础的掌握和java编程良好习性的培养,没有什么特别的难点需要掌握,但也是要必不可少的细心,特别是有的看着很简单的东西,反而更要注重细节。这次测验中,出的主要的错误普遍由于自己的粗枝大叶,虽然新冠尚未康复脑子昏昏沉沉有点影响,但测验做完后留有大量时间不去好好检查一遍也是战略性上的轻视和错误。
需要掌握的东西
1. return Boolean.valueOf(str); //将字符串转化为对应的boolean类型数据
2. public static void main(String s){
编译无错,但运行时指示没有正确定义main方法