Java SE 基础知识(二)

1. 类由两大部分构成:属性和方法。属性一般用名词来表示,方法一般用动词来表示。

2. 如果一个java源文件中定义了多个类,那么这些类中最多只能有一个类是public的,可以都不是public的。

3. 在Java中进行方法参数传递时,无论传递的是原生数据类型还是引用数据类型,参数传递方式统一是传值(pass by value),Java中没有传递引用(pass by reference)的概念。

4. 方法重载(Overload):表示两个或多个方法名字相同,但方法参数不同。方法参数不同有两层含义:

1). 参数个数不同

2). 参数返回值不同

5. 如果想在一个构造方法中调用另外一个构造方法,那么可以使用this()的方式调用,this()括号中的参数表示目标 构造方法中的参数。this()必须作为构造方法的第一条语句。

6. Java是单继承的

7. super关键字:super表示对父类对象的引用。

8.  如果子类使用super()显示调用父类的某个构造方法,那么在执行的时候就会寻找与super()所对应的构造方法而不会再去寻找父类的不带参数的构造方法。

与this一样,super()也必须要作为构造方法的第一条语句执行。

9. 当父类没有不带参数的构造方法时,子类需要使用super来显示地调用父类的构造方法,super指的是对父类的引用。

10. 方法重写(Override) :又叫做覆写,子类与父类的方法返回类型一样、方法名称一样,参数一样,这样我们说子类与父类的方法构成了重写关系。

11. 当两个方法形成重写关系时,可以在子类方法中通过super.run()形式调用父类的run()方法,其中super.run()不必放在第一行语句,因为此时父类对象已构造完毕,

先调用父类的run方法还是先调用子类的run方法时根据程序逻辑决定的。

12. 在定义一个类的时候,如果没有显式指定该类的父类,那么该类就会继承于 java.lang.Object 类(JDK 提供的一个类, Object类是 Java 中所有类的直接或间接父类)。

13. 多态(Polymorphism):所谓多态,就是父类型的引用可以指向子类型的对象,或者接口类型的引用可以指向实现该接口的类的实例。

14. 强制类型转换:

1). 向上类型转换(upcast) :比如说将 Cat 类型转换为 Animal 类型,即将子类型转换为父类型。对于向上类型转换,不需要显式指定。

2). 向下类型转换(downcast) :比如将 Animal 类型转换为 Cat 类型。即将父类型转换为子类型。对于向下类型转换,必须要显式指定(必须要使用强制类型转换) 。

15. 抽象类(abstract class):使用abstract修饰的类叫做抽象类,抽象类无法实例化。

16. 如果某个类包含了抽象方法,那么该类一定是抽象类。但抽象类中也可以包含具体的方法(有声明,有实现)。

17. 在子类继承父类(父类是一个抽象类)的情况下,那么该子类必须要实现父类中定义的所有抽象方法;否则,该子类需要声明称一个abstract class。

18. 接口介绍:

1). 接口中的所有方法都是抽象方法。在声明接口中的方法时,可以使用abstract关键字,也可以不使用。通常情况下省略。

2). 一个类实现了某个接口,那么该类必须要实现接口中声明的所有方法。如果该类是一个抽象类,可以不实现接口中的方法。

3). 接口中也可以定义成员变量。 接口中的成员变量都是 public 、final 、static  的。

20. static 关键字:

1). static 修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量;一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量的值也会

随之发生变化。如果一个成员变量是 static 的,那么我们可以通过 类名. 成员变量名的方式来使用它(推荐使用这种方式) 。

2). static 修饰方法:static 修饰的方法叫做静态方法。对于静态方法来说,可以使用 类名. 方法名的方式来访问。

3). 静态方法只能继承,不能重写。

21. static 代码块:

1). 静态代码块。静态代码块的作用也是完成一些初始化工作。首先执行静态代码块, 然后执行构造方法。 静态代码块在类被加载的时候执行,而构造方法是在生成对象的时候执行;

要想调用某个类来生成对象,首先需要将类加载到 Java 虚拟机上(JVM) ,然后由 JVM 加载这个类来生成对象。

2). 类的静态代码块只会执行一次,是在类被加载的时候执行的,因为每个类只会被加载一次,所以静态代码块也只会被执行一次;而构造方法则不然,每次生成一个对象的时候都会调用类

的构造方法,所以 new 一次就会调用构造方法一次。

3). 如果继承体系中既有构造方法,又有静态代码块,那么首先执行最顶层的类的静态代码块,一直执行到最底层类的静态代码块,然后再去执行最顶层类的构造方法,一直执行到最底层类

的构造方法。 注意:静态代码块只会执行一次。

22. final 关键字:

1).final 修饰类:当一个类被 final 所修饰时,表示该类是一个终态类,即不能被继承。

2).final 修饰方法:当一个方法被 final 所修饰时,表示该方法是一个终态方法,即不能被重写(Override)。

3).final 修饰属性:当一个属性被 final 所修饰时,表示该属性不能被改写。当final修饰一个原生数据类型时,表示该原生数据类型的值不能发生变化从 (比如说不能从 10  变为 20 ) ;

如果 final修饰一个引用类型时,表示该引用类型不能再指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。

23. final 类型成员变量赋值方式 :

1). 在声明 final 类型的成员变量时就赋上初值

2). 在声明 final 类型的成员变量时不赋初值,但在类的所有构造方法中都为其赋上初值。

24. 静态的只能访问静态的;非静态的可以访问一切。不能在静态方法中使用this关键字。

25. 包:用于将完成不同功能的类分门别类,放在不同的目录(包)下。包的命名规则: 将公司域名反转作为包名。对于包名:每个字母都需要小写。如果定义类的时候没有使用 package,

那么Java 就认为我们所定义的类位于默认包里面(default package)。

26. 编译带有 package 声明的 Java 源文件有两种方式:

1). 直接编译, 然后根据类中所定义的包名,逐一手工建立目录结构,最后将生成的 class文件放到该目录结构中(很少使用,比较麻烦) 。

2). 使用编译参数 –d,方式为 javac –d . 源文件.java,这样在编译后,编译器会自动帮助我们建立好包所对应的目录结构。

27. import a.bb.*,表示导入 a.bb 包下面的所有类。import aa.bb.*并不会导入 aa.bb.cc 包下面的类。

28. 如果两个类在同一个包下面,不需要导入,可以直接使用。

29. 访问修饰符(access modifier):

1). public(公共的):被 public 所修饰的属性和方法可以被所有类访问。

2). protected(受保护的):被 protected 所修饰的属性和方法可以在类内部、相同包以及该类的子类所访问。

3). private(私有的):被 private 所修饰的属性和方法只能在该类内部使用

4). 默认的(不加任何访问修饰符):在类内部以及相同包下面的类所使用。

30. instanceof: 判断某个对象是否是某个类的实例。语法形式:引用名 instanceof 类名(接口名) ,返回一个 boolean 值。当类名为父类名时,返回值也是true。

31. 相等性的比较(==)

1). 对于原生数据类型来说,比较的是左右两边的值是否相等。

2). 对于引用类型来说,比较左右两边的引用是否指向同一个对象,或者说左右两边的引用地址是否相同。

32. java.lang 包下的类无需显示导入,编译时编译器会自动帮我们导入。

33. 16 进制,逢 16 进一,16 进制的数字包括:0~9,A,B,C,D,E,F,字母不区分大小写。

34. equals() 方法,该方法定义在 Object  类当中,因此 Java  中的每个类都具有该方法,对于Object类的equals() 方法来说,它是判断调用 equals() 方法的引用与传进来的引用是否一致,

即这两个引用是否指向的是同一个对象。于 对于 Object  类的 equals() 方法来说,它等价于==

35. 当打印引用时,实际上会打印出引用所指对象的 toString()方法的返回值,因为每个类都直接或间接地继承自 Object,而 Object 类中定义了toString(),因此每个类都有toString()这个方法。

文中内容主要摘自圣思园笔记。

时间: 2024-08-05 06:49:38

Java SE 基础知识(二)的相关文章

Java SE 基础知识(2)--- String 的构造方法

String 对于所有 Java 程序员来说都不会陌生,几乎每天甚至每个程序都会和 String 打交道,因此将 String 的常用知识汇集在此,方便查阅. 概叙: Java 中是如此定义 String 的: public final class String extends Object implements Serializable, Comparable<String>, CharSequence String 是 final 类型的,继续看下面的解释: The String clas

Java SE 基础知识(String,Array)

String 类: 1. 对于String对象的相等性判断来说,请使用equals()方法,而不是==.String的equals()是判断当前字符串与传进来的字符串的内容是否一致. 2. String是常量,其对象一旦创建完毕就无法改变.当使用+拼接字符串时,会生成新的String对象,而不是向原有的String对象追加内容. 3. String Pool (字符串池) 在栈内存中. 4. String s = “aaa”;(采用字面值方式赋值) 1). 查找 String Pool 中是否存

Java SE 基础知识(1)

常量: 常量是一种标识符,它的值在运行期间恒定不变,并且常量在程序中只能被引用,而不能被重新赋值. 常量的命名规则: 1.在 Java 中,在变量声明中加入 final 关键字代表常量,加入 static 关键字代表类变量.一般结合起来声明一个变量: 2.尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串: public static final double PI = 3.1415926; 在 Java 接口中声明一个变量,编译时会自动加上 public static final

Java SE 基础:标识(zh&#236;)符

Java SE 基础:标识(zhì)符 一.标识符定义 标识符,就是给类.接口.方法.变量等起名字时的字符序列 二.组成规则与注意事项 1.组成规则 英文大小写字母 数组 $ 和 _ 2.注意事项 不能以数组开头 不能是 Java 关键字(见关键字表:) 书写时区分大小写(大写和小写表示两个不同的标识符,如 public 和 Public 是不同的) 三.Java 中标识符的命名规则要做到:见名知意 包(package):包其实就是文件夹,用于区分项目中文件的结构,包名应当使用小写 单级包:to

什么才是java的基础知识?

近日里,很多人邀请我回答各种j2ee开发的初级问题,我无一都强调java初学者要先扎实自己的基础知识,那什么才是java的基础知识?又怎么样才算掌握了java的基础知识呢?这个问题还真值得仔细思考. 我做j2ee开发已经超过十载,作为过来人,心路历程估计和大家差不多.编码的前几年,很长一段时间觉得java简单,开发实现各种功能都很轻松,代码写起来根本不费劲(主要是因为写的代码都是一些功能业务逻辑).但同时自己心里明白,自己其实没有什么水平,自己这3,4年以来学懂的东西就那么多,其他人几个月就可以

Java 接口基础知识

一.Java接口基础知识 1, Java语言不支持一个类有多个直接的父类(多继承),但可以实现(implements)多个接口,间接的实现了多继承. 2, 与Java接口相关的设计模式: 1, 定制服务模式 设计精粒度的接口,每个Java接口代表相关的一组服务,通过继承来创建复合接口 2, 适配器模式 当每个系统之间接口不匹配时,用适配器来转换接口 3, 默认适配器模式 为接口提供简单的默认实现 4, 代理模式 为Java接口的实现类创建代理类,使用者通过代理来获得实现类的服务 5, 标识类型模

Java多线程基础(二)定时器类:Timer类和TimerTask类

Java多线程基础(二)定时器类:Timer类和TimerTask类 Timer类和TimerTask类是jdk实现定时器功能的早期方法,jdk1.5以前就支持Timer类和TimerTask类.JDK1.5之后引入了新的机制,将在后续博文中研究. 1 指定时间间隔后执行任务 import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class TraditionalTimerTest {

Java Web基础知识之Filter:过滤一切你不想看到的事情

不要相信客户端, 所以做后端的人都应该铭记的事情.因为前端传过来的数据并不总是合法和有效的,所以后端是对访问资源的最后一道保护伞.之前我们在Spring中说到过AOP编程,AOP基础知识,它就可以在执行我们的方法之前进行一些预处理和验证来保护后端的资源.不难想到她的实现方式和本篇要说的过滤器的实现原理应该是相同的,都是通过Java的动态代理实现的(自己的理解). 在Java Web的开发中,过滤器用于拦截请求,并对ServletRequest对象进行处理,我们可以想到的,它可以用来验证权限.加密

【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder

[喵"的Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final类,主要用于字符串的处理. 1.1 不可变性 String内的字符串是不可变的,每一次修改都会重新生成一个新的String对象实例. 例: 1 // 在堆中会创建一个"Hello"字符串实例,把地址赋给对象a 2 String a = new String("Hello&