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()这个方法。
36. 包装类(Wrapper Class) : 针对于原生数据类型的包装。所有的包装类(8 个)都位于java.lang 包下。Java 中的 8 个包装类分别是:
Byte, Short, Integer, Long, Float, Double,Character, Boolean
他们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。
37. 对于 Java 中的常量的命名规则: 所有单词的字母都是大写, 如果有多个单词,那么使用下划线连接即可。比如说:
public static final int AGE_OF_PERSON = 20;
Java SE 基础知识(二)的更多相关文章
-
Java SE基础知识
Java SE面试题 目录 Java SE基础 基本语法 数据类型 关键字 面向对象 集合 集合类概述 Collection接口 List Set Map Java SE基础 基本语法 数据类型 Ja ...
-
Java SE 基础知识(一)
一.基础知识 1. Java SE : Java Standard Edition Java ME : Java Micro Edition Java EE : Java Enterprise Edi ...
-
Java的基础知识二
一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...
-
Java SE 基础知识(String,Array)
String 类: 1. 对于String对象的相等性判断来说,请使用equals()方法,而不是==.String的equals()是判断当前字符串与传进来的字符串的内容是否一致. 2. Strin ...
-
Java SE 基础知识
常量: 常量是一种标识符,它的值在运行期间恒定不变,并且常量在程序中只能被引用,而不能被重新赋值. 常量的命名规则: 1.在 Java 中,在变量声明中加入 final 关键字代表常量,加入 stat ...
-
java 基础知识二 基本类型与运算符
java 基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...
-
Java SE 基础:注释
Java SE 基础:注释 一.注释定义 用于解释说明程序的文字. 二.注释的作用 1.解释说明程序,提高程序的可读性 2.可以帮助我们调试程序:通过注释代码块,检测错误位置 三.格式 1.单行注释 ...
-
Java SE 基础:标识(zhì)符
Java SE 基础:标识(zhì)符 一.标识符定义 标识符,就是给类.接口.方法.变量等起名字时的字符序列 二.组成规则与注意事项 1.组成规则 英文大小写字母 数组 $ 和 _ 2.注意事项 不 ...
-
Java 多线程——基础知识
java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...
随机推荐
-
谁是2016年的.NET开发者?
Nora Georgieva (http://www.telerik.com/blogs/infographic-the-dotnet-developer-of-2016) Whether you h ...
-
UIPopoverController使用
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
-
Openwrt Uboot烧写
Openwrt 烧uboot 需要慎重,一般买一个带不死uboot的路由器再折腾会比较安全,因为 openwrt firmware对uboot分区进行了保护,而且带有不死uboot的路由器可以通过we ...
-
关于http响应内容压缩的一点小积累。
1.在tomcat的server.xml配置文件中,添加上背景颜色为绿色的配置,服务器就会自动压缩 <Connector port="80" maxHttpHeaderSiz ...
-
JAVA之旅(二十五)——文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine
JAVA之旅(二十五)--文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine 我们继续IO上个篇 ...
-
Android 在Fragment中执行onActivityResult不被调用的简单解决方法
在Android开发中,我们经常会用到FragmentActivity下嵌套多个Fragment,但是在开发过程中会发现在嵌套的Fragment中使用onActivityResult回调方法没有被执行 ...
-
Python3 元组(tuple)
一.定义:不可变序列的数据元素集合,元组的元素是不可以修改的 元组使用小括号,例如:tuple = (1,) 注意:即使元组里面只有一个元素,该元素后面也要加 ",":在函数传递参 ...
-
快速排序 之添加复合插入排序和原始序列取中值左pivot
quicksort中,当n小于一定值时,排序效率就比直接插入排序底了,所以,此时就不要再递归下去了,直接插入排序好了:快速的原理就是因为折半递归,所以初始pivot应该有个好一点的选择,这里在原序列左 ...
-
C# winform 选择文件保存路径
1.winform 点击按钮选择文件保存的路径,效果如下图: 具体代码如下: private void button8_Click(object sender, EventArgs e) { Fold ...
-
java插件之Lombok
使用注释来减少Java中的重复代码 @NonNull - 或者:我怎么学会停止担心和喜欢上了NullPointerException. @Cleanup - 自动资源管理:安全地调用您的close() ...