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()这个方法。
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 定时调度的例子 ...
随机推荐
- android 关于view的onTouch和onClick同时触发解决方案
extends:http://blog.sina.com.cn/s/blog_aa0bd5950101gbwt.html 做了一个悬浮窗,需要处理onTouch和onClick事件, 1 定义一个bo ...
- Windows 10 下 PostgreSQL 生成 UUID(Guid)
最近在Windows 10 下安装了 PostgreSQL(postgresql-9.6.3-1-windows.exe),在学习过程中,发现PostgreSQL 支持UUID(Guid)类型,但是却 ...
- 打jar包
1.在文件夹中新建文件manifest.mf 2.在dos窗口中jar cvfm 名字.jar manifest.mf 所有的编译的类class,中间有空格 3.在dos窗口java -jar 名字 ...
- Cloudstack云平台实践
laaS平台的虚拟化 利用率高 资源整合 节约电能 节约空间 灾难恢复 CloudStack是一个开源的具有高可用性及扩展性的云计算平台.支持管理大部分主流的hypervisor,如KVM虚拟机,Xe ...
- Scikit-learn技巧(拓展)总结
Scikit-learn技巧(拓展)总结 本文转载自:http://www.jianshu.com/p/516f009c0875 最近看了<Python数据挖掘入门与实战>,网上有说翻译地 ...
- Django运算符表达式
在html页面中,加入运算符表达式,进行逻辑判断.可参考手册.我用的Django是2.1版本 view.py中的代码: from django.shortcuts import render from ...
- CodeForces - 812B Sagheer, the Hausmeister 搜索 dp
题意:给你n行长度为m的01串(n<15,m<100) .每次只能走一步,要将所有的1变为零,问最少的步数,注意从左下角开始,每次要将一层清完才能走到上一层,每次只有在第一列或者最后一列才 ...
- 2018/03/22 每日一个Linux命令 之 grep
Linux grep命令用于查找文件里符合条件的字符串. -- 最长用 搜索 指令,也常常用于 管道 搜索输出等,应用广泛. 这个命令的参数比较多,这里只介绍一部分比较常用的参数,具体的可以到 htt ...
- Catch That Cow--POJ3278
Description Farmer John has been informed of the location of a fugitive cow and wants to catch her i ...
- 洛谷P3243 [HNOI2015]菜肴制作 拓扑排序+贪心
正解:拓扑排序 解题报告: 传送门! 首先看到它这个约束就应该要想到拓扑排序辣QwQ 首先想到的应该是用优先队列代替队列,按照节点编号排序 然后也很容易被hack:<5,1> 正解应为5, ...