[关闭]
@2368860385 2022-01-06T00:00:58.000000Z 字数 4117 阅读 370

Java学习笔记

学习笔记 SDU


针对期末考试进行一下学习,大部分为课件内容。

Outline

1、标识符

只能由字母(a-z,A-Z),数字(0-9),下划线(_)和美元符号($)组成
不能以数字开头
不能与关键字重名
严格区分大小写
2、关键字
3、java虚拟机概念:

实例变量与静态变量

①在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
②在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。

单引号双引号

单引号表示字符,双引号表示字符串。

重载函数

被重载的方法必须改变参数列表(参数个数或类型不一样);
被重载的方法可以改变返回类型;
被重载的方法可以改变访问修饰符;
被重载的方法可以声明新的或更广的检查异常;
方法能够在同一个类中或者在一个子类中被重载。
无法以返回值类型作为重载函数的区分标准。

子类父类转型

子类可以直接转型到父类(向上转型):此时如果子类重写了父类的函数,那么将会覆盖父类的函数。如果子类存在独有的变量函数,那么会隐藏,变成不可访问的。当这个父类再转换成子类时,又会显现。
父类不可直接转换到子类。

abstract

接口

一个类若只实现了接口的部分方法,那这个类就一定是一个抽象类.
反过来说,抽象类可以实现接口的部分方法或者一个方法也不实现.

抽象类和接口的区别
1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
3. 接口中不能含有静态代码块以及静态方法(用static修饰的方法),而抽象类是可以有静态代码块和静态方法。

接口不能实例化,不能使用new 运算符实例化一个接口。但是可以声明接口变量
一个接口类型的引用指向了一个实现给接口的对象,这样通过接口来调用方法可以屏蔽掉具体的方法的实。

常用函数

1、substring
String s.substring(begin, end) 不包括end
s.substring(begin)
2、Integer.parseInt(String) 字符串转整数
3、

pintia

数组也是对象。
一个Java源文件中可以有多个类,但只能有一个类是public的。
类中所有成员变量在所有成员方法中有效。
Java语言对语法要求严格,局部变量只有在定义、赋初值后才能访问。
在实例方法或构造器中,this用来引用当前对象,通过使用this可引用当前对象的任何成员。
实例变量只能通过对象名访问,类变量既可以通过某个对象名也可以通过类名来访问。
在方法中使用不定长度参数时,声明的不定长参数必须在参数的最后一个。
局部变量可以与成员变量重名。
如果Java源文件中包含了多个类,那么用编译器javac编译完源文件后将生成多个扩展名为.class的文件。

#

基本数据类型

byte:字节,bit:位
1字=2字节(1 word = 2 byte)
1字节=8位(1 byte = 8bit)
1B是1字节

byte 8位 [-128,127]
short 16位[-32768,32767]
int 32 位
long 64位
float32位
double 64位
char 16位
boolean 如果是数组调用,占用字节,1位

泛型与Object()

1、定义:
public class MyClass{}

2、使用
泛型只能只能代表引用类型,不能是原始类型,原始类型有byte/short/int/long 浮点型:float.double 字符型char 布尔型:boolean。
引用类型与原始类型的区别在于虽然二者保存在栈中,但原始类型保存的是实际值,而引用类型保存的是一个对象的内存地址。
所以可以MyClass<String>,而不可以MyClass<int>

3、定义泛型变量:
泛型不能直接定义变量,
private E[] data = (E[]) new Object[4];这样可以声明E类型的数组

部分实现:

  1. public class MyArray<E> {
  2. private int Size = 4;
  3. private int LastPos = 0;
  4. private E[] data = (E[]) new Object[4];
  5. //private E Element = (E) new Object();
  6. public E Find(int index) throws Exception {
  7. if (index >= LastPos) {
  8. throw new ArrayIndexOutOfBoundsException();
  9. }
  10. return data[index];
  11. }
  12. }

4、使用object():
继续上次写一个ArrayList,可以支持不同类型的变量。

  1. public class MyArrayList {
  2. private int size;
  3. private Object[] elementData = new Object[10];
  4. public Object get(int index) {
  5. return elementData[index];
  6. }
  7. }

第九章 继承

1、子类可以调用父类的函数。
2、子类继承父类的所有变量和函数,并为变量预留内存空间,但是子类不能访问调用父类的private变量和函数(有但不能调用)
3、构造方法不能被继承。因为父类的构造方法是构造一个父类,而子类继承于父类,但不同于就是父类。但子类可能需要调用父类的构造函数来对子集的类进行初始化,然后加以修饰,所以使用super可以调用。(只能第一行)
super()
super(int ,double) 可传参
super.function() 调用父类的函数
this.function() 调用自己类中的函数

关于super
1. 子类不能继承父类的构造函数,但是可以调用父类的构造函数
2. 如果父类没有定义构造函数,系统会默认定义一个无参无返回值的构造函数,子类继承时无需在子类构造函数中==显式 == 调用super();
(即子类的构造函数中默认调用父类的无参构造函数,只不过第一行代码:super();一直被省略了)。
3.如果父类有有参构造函数,则子类必须在自己的构造函数中显示的调用父类的构造函数即super(参数名)。
如果父类的构造函数只有一个,且修饰符是private,则不可以被继承。
4.如果子类的某个构造函数想要调用父类的其他带参构造函数,在构造函数第一行添加super(args1,args2…);(参数的多少根据想调用父类构造函数的形参而定)
5.如果子类的构造函数在第一行super(args1,args2…);调用了父类的其他有参构造函数,那么子类的该构造函数不会再调用父类的默认构造函数
6. 继承中的构造方法的执行顺序:父类有构造函数,子类也写构造方法的时候必须显示的调用父类的构造方法【子类在创建对象的时候,掉用构造方法的顺序是:第一步:调用父类的构造方法 第二步:调用子类的构造方法】

关于接口与抽象类

  1. 接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,'
  2. 另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然 后是抽象类实现接口,最后才到具体类实现。
  3. 还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.

1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface.
2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public,abstract 类型的。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注