type
status
date
slug
summary
tags
category
icon
password

软工期末java

java概论

javac编译的是.java文件;而java解释的是.class文件
package语句是表明当前包是什么,只能有一条;import语句是指明要导入哪些包,可以有多条
如下图:
notion image
关于java应用程序以及小应用程序
notion image
小应用程序的执行步骤
notion image
即:
notion image
notion image
import语句的两种格式如上图(包是由一堆类或者接口组成的,包就相当于是类和接口的目录)
第一种是指定引入一个包中的某一个类(注意包名和类名之间是使用点链接的而不是使用斜杠);第二种是引入一个包中的所有类
notion image
所以在正常编写java代码的时候就直接使用星号进行导包即可
notion image
一个类文件中只能有一个类被声明为public,并且public修饰的类的类名必须作为当前java文件的文件名
notion image
注意主函数的写法
java采用unicode编码,该编码使用十六位编码
注意java中的空是null而不是大写的NULL
notion image
notion image
保留字的意思是标识符不能使用goto和const进行命名,但是这俩也不是java的关键字
java中的标识符命名规则大差不差,就是多了一个美元符号,可以在标识符的开头也可以在标识符的中间
notion image
数组是一个引用类型,所以是需要用new的
notion image
注意byte是整数类型,而字符类型是char,没必要使用byte来存储字符(字符是使用单引号包围起来的,双引号包围起来就算是字符串了)
notion image
字符串虽然是引用类型,但是不需要使用new来进行创建
java中没有无符号数
对简单变量(也就是非引用变量),他们的空间才声明的时候就被创建
对引用变量,声明的时候只是声明了一个指针,指针指向的空间需要在new的时候进行分配
notion image
访问对象的成员需要使用点运算符来获取,这个跟c语言的结构体取值是一样的
这里的常量应该指的是字面量(如:123、123L等)
java中十进制数不能以0开头,因为八进制数是以0开头的
notion image
notion image
所有的整数默认是int,浮点数默认是double,所以要小心这种变量的声明:float a=3.14,因为这个时候3.14是一个双精度浮点数,这个时候从大范围到小范围就需要进行强制类型转换了
notion image
单引号包围
notion image
就是显示为八进制数和十六进制数的意思,真是TM不讲人话
notion image
这个是跟c不一样的
在java中类的成员变量就相当于是这个类中的全局变量
notion image
变量的初始化值,要注意的是字符类型的初始化值是unicode编码为0的字符,布尔类型的初始化值是false,引用类型的初始化值是null
下面是运算符有限集的表,看看就好
notion image
notion image
注意除号使用这个斜杠
notion image
这个应该是按位取反的意思,去你的按位求补
notion image
notion image
上面讲这么多就是下面这一句话
notion image
notion image
notion image
注意三个右移才是无符号右移,无符号右移不论正数还是负数都是直接补0,有符号右移对负数而言是补1
notion image
关于三目运算符
notion image
新版的java的switch语句的表达式已经可以使用String类型了
notion image
switch语句的格式。注意switch(表达式)之后是需要加上花括号的
notion image
就是从break语句处直接跳出(continue语句是从continue处直接跳出当次循环)
notion image
do while语句的格式。注意while的后面有一个分号
notion image
break语句在循环中使用可以指定跳出哪一层循环
notion image
continue语句也是一样的
notion image
注意创建一个数组的时候需要使用new
notion image
还是选择第二种形式,也就是int[] a;而不是int a[]
notion image
数组的实例化
notion image
数组也可以像c语言一样直接进行赋值
notion image
所以java的多维数组是需要分层初始化的,也就是:
notion image
通过这个方法就可以创建出来一个锯齿数组
notion image
注意在java里面字符串就是一个单独的类了,而不是像c语言一样是一个字符数组
notion image
注意java的输入,这个也容易忘记
notion image
类可以是final的,表示他不能被继承,而且这些关键字好像还没有顺序要求
notion image
构造器的名字必须和类名是一致的,并且没有返回值类型的字段
notion image
通常都是将常量定义在接口中的,因为在接口中就不用写final了(接口中的变量默认是final的)
notion image
方法的定义格式(上面是没有加上访问权限控制修饰符的,比如public等)
当方法的返回值是void的时候,是可以没有return语句的
在java中也是值传递
notion image
这个时候对p是值传递,但是对p内的成员就是引用传递了
总而言之就是将实参的值拷贝给形参
方法过载是同一个类中有多个同名的函数(参数的顺序不同甚至也算是过载)
notion image
所以构造方法一定没有返回值
构造方法隐式返回这个类的对象
notion image
notion image
notion image
也就是static方法中只能调用static的成员
static的成员可以通过类名直接点
notion image
不能使用this和super是因为使用static的时候可能还没有对象被创建
notion image
static块只在类被加载时执行一次,而不是在对象创建时执行
GC回收的时候是调用对象的finalized方法
java中的类实际上就是一种数据类型(还记得编译中的数据类型的定义吗,数据类型是一组值和操作的集合)
notion image
通过super调用构造器必须在构造器的第一行捏,也就是上面的第二句话
notion image
抽象类必须有实例类,而final就不能被继承
notion image
成员继承是继承了,但是有的是没办法访问的,也就是下图:
notion image
notion image
就是运行时是从下到上来找最近的
notion image
方法覆盖的时候只有当访问权限更宽松的时候才能进行覆盖(也就是子类方法一定要比父类方法更宽松)
notion image
这个表示的是对当前类中的其他构造器的引用
notion image
所以super实际上就是一个对父类对象的引用(注意是对象而不是类,因为创建子类对象的时候实际上就已经初始化了一个父类对象)
notion image
所以实际上如果没有调用父类的构造器,编译器也会自己加上去一个super来对父类进行实例化(所以创建了一个子类对象就一定创建了一个父类对象)
notion image
所以要进行Person a= new Student();的时候,一定要保证调用的a的成员一定要在Person中存在(也就是编译看左边)
notion image
上图就是说—— 运行时看右边
notion image
这种就是这个变量只能被赋值一次,也就是在调用构造器时进行赋值
当函数的参数使用final修饰时,在函数内部就不能改变参数的值,这个跟c语言的函数参数是一样的
notion image
final方法是不会被子类覆盖的
notion image
也就是:如果成员抽象,类一定要抽象;如果类抽象,成员不一定抽象
notion image
抽象方法没有花括号,取而代之的是分号
notion image
这三种方法不能被定义为抽象
notion image
package语句是表示当前的类是属于哪一个包的
notion image
说明包里面是可以套包的(隔着套娃呢)
notion image
可以理解为*一定是正确的
notion image
不导包的话调用其他包里面的类的话就需要在前面加上包名,如上图中的最后一行
notion image
注意上面的子类指的是不同包中的非子类
notion image
接口中的方法都是抽象方法,接口中定义的量都是常量,即下图:
notion image
notion image
就像一个抽象类一样
notion image
就像父类一样,可以做到Person a=new Student();,其中Person是一个接口,即:
notion image
notion image
接口之间的继承(注意接口只能被接口继承)就跟类之间的继承没啥区别
唯一的区别是,接口可以进行多继承:
notion image
notion image
实际上使用的时候只需要注意接口的一点点特性即可,也就是都是抽象方法,都是常量,能够多继承即可
notion image
notion image
所以使用匿名类的时候实际上创建出来的对象是实际对象的子类
notion image
这里说的用People的一个子类创建对象是说这段代码创建出来的对象是People的一个子类对象
notion image
同理,上图中就是创建了一个接口的一个实例
notion image
notion image
notion image
其中Exception和RuntimeException就是编译时异常(就是写代码的时候就会报红)和运行时异常(就是程序执行时才可能出现异常)
notion image
通常是使用最后一个方法
notion image
自建异常的时候一般就是只实现这两个构造器(要背String的构造器捏)
抛异常的时候就不使用一个引用变量来接了,而是直接抛出,如下图:
notion image
异常捕获的格式
notion image
注意最后使用的是finally
notion image
try catch嵌套之后如果出现异常就会从内层开始比对,如果没有比对到的话跳到当前try catch的上一层继续尝试catch。如果当前没有catch到的话就继续向上层抛出异常
关键字throw是在代码块中抛出单个异常;而throws就是在方法上抛出所有该类型可能出现的异常
notion image
notion image
所以是可以直接抛出异常然后马上捕获的
实际使用的时候是可以两个一起写的(这样写也比较稳),如下图:
notion image
然后再在想要trycatch的地方进行catch
Kicad学习Go!
Loading...
Noah
Noah
永远年轻,永远热泪盈眶
公告
❗❗复习笔记问题❗❗
由于兼容性问题
导入md文件可能导致了一些格式错误
🌹如发现格式错误,请联系我~🌹
🌹如博客内容有误也欢迎指出~🌹