这是我复习JavaSE时第一部分的知识点回顾,大部分都是看书和视频时将一些内容提取出来,之后会继续巩固和学习。
一、Java程序执行过程与编译原理
开发Java程序简单步骤:
(1)编写Java源文件,用.java为后缀名 源文件:*.java
(2)编译源文件生成字节码文件,用.class为后缀名 编译:javac *.java
(3)运行字节码文件 运行:java *
JDK含有编译、调试和执行Java程序所需的软件和工具
javac命令用于将
Java源代码文件编译成字节码,
java命令用于执行字节码文件
二、数据类型与运算符
1、Java中主要分为两种数据类型:基本数据类型和引用数据类型
byte、short、int、long
double、float
char
boolean
String等
2、
变量
定义:[访问修饰符]变量类型 变量名 [=初始值];
自动类型转换:将低级别的类型赋值给高级别类型时将进行自动类型转换。
强制类型转换:将高级别的类型赋值给低级别类型时,必须进行强制类型转换。
变量类型 变量名 = (变量类型)变量名;
运算符
运算符就是告诉程序执行特定的运算操作的符号。
赋值运算符:=、+=、-=、*=、/=、%=
算术运算符:+、-、*、/、%、++、--
关系运算符:==、!=、>、<、>=、<=
逻辑运算符:&&、||、!、&、|、^
位运算符:&、|、^、~、<<、>>、>>>
条件运算符: 条件?表达式1:表达式2
三、流程控制
1、流程控制结构:顺序结构、选择结构(if、switch)、循环结构(while、do-while、for)
对于循环次数确定的情况,通常选用for循环;不确定时通常选用while循环和do-while循环
2、
跳转语句
跳转语句可以把控制转移到循环甚至程序的其他部分。
(1)break语句在循环中的作用是终止当前循环,在switch语句中的作用是终止switch。
(2)continue语句的作用是强制循环提前返回,也就是让循环跳过本次循环中的剩余代码,然后开始下一次循环。
(3)return语句的作用是结束当前方法的执行并退出返回到调用该方法的语句处。
四、数组
数组是用来存储一组相同类型数据的数据结构。
定义数组: 数据类型[] 数组名 = new 数据类型[数组长度];
java.util.Arrays是一个专门用于操作数组的工具类,常用方法有:
equals(array1,array2):比较两个数组是否相等;
sort(array):对数组array的元素进行升序排列;
toString(array):将一个数组array转换成一个字符串;
fill(array,val):将数组array的所有元素都赋值为val;
copyOf(array,length):把数组array复制成一个长度为length的新数组;
binarySearch(array,val):查询元素值val在数组array中的下标。
五、面向对象基础
1、面向对象是java最重要的特性。在java中,“一切皆对象”。面向对象思想:按照真实客观事物的自然规律进行分析,客观世界中存在什么样的实体,构建的软件系统就存在什么样的实体。
面向对象有三个基本特性:封装性、继承性、多态性。
(1)
封装性:封装能够使外部访问者不能随意存取对象的内部数据,隐藏了对象的内部细节,只保留有限的对外接口。外部访问者不用关心对象的内部细节,使得操作对象变得简单。
(2)
继承性:继承最基本的作用就是使得代码可重用,增加软件的可扩展性。Java中只支持单继承,即每个类只能有一个直接父类。
[访问修饰符] class
extends {
}
(3)
多态性:意味着一个特定类型的变量可以引用不同类型的对象,并能自动调用引用的对象的方法。
发生多态要的三个前提条件:
继承。多态发生一定要子类和父类之间。
覆盖。子类覆盖了父类的方法。
声明的变量
2、类、变量和方法
类是java中的一种重要的引用数据类型,它封装了一类对象的数据和操作,即成员变量和成员方法。
类声明:[访问修饰符] class 类名{
//内部具体代码
}
成员变量:[访问修饰符] 数据类型 变量名; 直接在类中定义的变量,在方法的外部。
局部变量:定义在方法中的变量。
成员方法:[访问修饰符] 返回类型 方法名称(参数类型 参数名1,参数类型 参数名2,……){
//方法体
}
构造方法:进行一些数据的初始化。
[访问修饰符] 方法名 ([参数列表]){
//方法体
}构造方法没有返回值,方法名与类名相同
对象:一个对象称为类的一个实例,是类一次实例化的结果。
实例化对象:类名 对象名 = new 类名();
使用对象: 对象名.属性 //引用对象的属性
对象名.方法名() //引用对象的方法
方法重载(Overload):在一个类中定义多个同名的方法,每个方法具有不同的参数类型或参数个数。
this关键字:是对一个对象的默认引用。每一个实例方法内部都有一个this引用变量,指向调用这个方法的对象。this只能调用实例变量、实例方法和构造方法,不能调用类变量和类方法,也不能调用局部变量。
3、包
包的定义: package 包名;java中的包机制也是封装的一种形式。
声明包的含义是声明当前类所在的包。
导入包:import 包名;声明在当前类中要用到的其他类所在的包。
包的作用:类似文件夹,将类组合成较小的单元;在不同包中的类可以重名,防止命名冲突;在更广的范围内保护类、数据和方法。
常用包:Java se提供一些常用包,其中包含了java开发中常用的基础类。
(1)java.lang包:包含了Java语言的核心类,如Object、Class、String、包装类和Math等。使用此包中类型无需import语句导入,由解释器自动引入。
(2)java.io包:包含提供多种输入/输出流类,如InputStream、OutputStream、Reader和Writer。还有文件管理相关类和接口,如File和FileDescriptor类以及FileFilter接口。
(3)java.net包:包含进行网络相关的操作的类,如URL、Socket和ServerSocket等。
(4)java.util包:包含一些实用工具类和接口,如集合、日期和日历相关类和接口。
(5)java.text包:提供文本处理、日期格式化和数字格式化等相关类和接口。
(6)java.awt和javax.swing包:提供了Java图形用户界面开发所需的各种类和接口。
4、访问控制
(1)java面向对象的封装性是通过对成员变量和方法进行访问控制实现的,访问控制分为4个等级:私有(private)、默认、保护(protect)和公有(public)。
访问成员的两种方式:调用,通过类或对象调用它的成员;继承,子类继承父类的成员变量和方法。
public级别两种方式都可以;
默认级别在同一个包中两种方式都可以,不能在包之外访问;
protect级别在同个包中与默认级别一样,但在包之外可以继承访问;
private级别只能在本类中通过调用方法访问,不能继承访问。
(2)静态变量和静态方法
static关键字修饰的成员变量是静态变量,修饰的方法是静态方法。
静态方法可以访问静态变量和其他静态方法,但不能直接访问实例变量和实例方法。
在实例方法中可以直接调用类中定义的静态变量和静态方法。
5、
方法重写(Override)
子类中可以声明与父类一样的成员变量或方法,对此方法进行重新编写,称为方法的重写或覆盖。
重写方法和被重写方法必须具有相同的方法名、参数列表和返回值类型,重写方法不能缩小被重写方法的访问权限。
6、向上转型:子类向父类的转换称为向上转型。
<父类型> 引用变量名 = new <子类型>();此类型系统会进行自动类型转换,此时通过父类的引用变量调用的方法是子类覆盖或继承了父类的方法,不是父类的方法。
向下转型:父类类型转换为子类类型称为向下转型,此时必须进行强制类型转换。
<子类型> 引用变量名 = (<子类型>) <父类型的引用变量>;此时如果不是转换为真实子类类型,会出现类型转换异常。在java中提供instanceof运算符来进行类型的判断。
instanceof运算符,判断一个对象是否属于某个引用类型。
obj instanceof type
其中obj是一个对象,type是引用类型,如果obj对象是type引用类型实例则返回true,否则false。
7、final关键字:能修饰变量、方法和类。
(1)final修饰变量,即成为常量,只能赋值一次,但是final所修饰的局部变量和成员变量有所不同:final修饰的局部变量必须在使用之前被赋值一次才能使用;final修饰的成员变量在声明时没有赋值的叫“空白final变量”,必须在构造方法或静态代码块中初始化。
(2)final修饰类,该类不能被继承。
(3)final修饰方法,该方法不能被子类覆盖。
8、抽象类与接口
Java中抽象类和抽象方法的修饰符是
abstract,抽象方法所在的类必定为抽象类。
abstract class <类名>{
[访问修饰符] abstract <返回类型> <方法名> ([参数列表]);
}
比抽象类更加抽象的是接口。(在接口中所有的方法都是抽象的(但在Java8之和接口中新增加了默认方法))。
public
interface 接口名{
//接口成员,可以是全局常量和公共的抽象方法
}
public 类名
implements 接口名{
//实现方法,实现接口的类必须实现接口中定义的所有抽象方法
//普通方法
}
接口本身也可以继承接口,一个普通类只能继承一个父类,但能同时实现多个接口,也可以同时继承抽象类和实现接口。
class 类名 extends 父类名 implements 接口1,接口2,……{
//类的成员
}
六、异常的捕获和处理
异常是指在程序的运行过程中所发生的不正常事件,异常会中断正在运行的程序。Java提供了异常处理机制,可以由系统来处理程序异常。
异常类型:
Error类:表示仅靠程序本身无法恢复的严重错误。
Exception类:由Java应用程序抛出和处理的非严重错误。
常见异常类:
Exception ==》异常层次结构的根类
ArithmeticException ==》算数错误异常,如以零作为除数
ArrayIndexOutOfBoundsException ==》数组下标越界
NullPointerException ==》尝试访问null对象成员(空指针异常)
ClassNotFoundException ==》不能加载所需的类
InputMismatchException ==》欲得到的数据类型与实际输入的类型不匹配
IllegalArgumentException ==》方法接收到非法参数
ClassCastException ==》对象强制类型转换出错
NumberFormatException ==》数字格式转换异常
1、Java的异常处理是通过5个关键字来实现的,即try、catch、finally、throw和throws。
try{
//可能会生成异常语句
}catch(Throwable e1){
//处理异常e1
}catch(Throwable e2){
//处理异常e2
}……finally{
//释放资源
}
void printStackTrace():输出异常的堆栈信息。
String getMessage():返回异常信息描述字符串,该字符串描述了异常产生的原因,是printStackTrace()输出信息的一部分。
无论try正常结束还是catch异常结束都会执行finally代码块,finally语句块中语句不执行的唯一情况是在异常处理代码中执行了System.exit(1)退出Java虚拟机。
2、throws,throw
(1)关键字throws声明某个方法可能抛出的各种异常以通知调用者,throws必须跟在方法参数列表的后面,不能单独使用。throws后面跟异常类,可以跟多个,之间由逗号隔开。
(2)throw关键字来自行抛出异常,throw位于方法体内部,可以作为单独语句使用。throw抛出一个异常对象,只能是一个。
异常链:创建了新的异常且保留了原有异常的信息。
作为一名软件工程专业的毕业后去干水电的我又回来了!也时常会想:现在重新去学Java会不会太晚了,当初为什么不好好学?而后又想想,想个pi啊!我觉得有些事情是不需要去考虑的,就像是学习。所谓“活到老,学到老”,在人生路上,不管你愿不愿意,总会去学习一些东西,又或者“被学习”一些东西。既然喜欢,那就去做吧,再想就老了。这算是转折路上的第一篇博客吧,就多写了好多废话,不再说了,坚持才是最重要的。
最后,祝自己好好学习,天天向上,当然,再给我来一打女朋友就更好了。(路人:“嗨,哥们,你的脸掉了!” 我:“哦,不要了。”)