访问权限
protected:同包、父子,default:同包。
重写和重载
重写是override,子改父;重载是overload,即类内方法同名。
重写时方法名和参数必须相同;重载时函数名相同,但是参数名、返回值、类型不能相同。
构造函数
什么是构造函数?
每一个类都有构造函数,当类的对象被创建时,构造函数会被调用。
volatile
本质:告诉JVM,该变量的值是不确定的,必须去内存中取值。
特点:
volatile变量的更新对于其他线程都是可见的。
volatile不能保证对变量操作的原子性。
对volatile变量的操作不会造成阻塞。
总结
volatile是java提供的一种轻量级同步手段,因为volatile只能保证多线程的内存可见性,不能保证多线程的执行有序性。如果想实现彻底的同步,那么需要同时保证可见性和有序性,那就需要使用 synchronized 。
getClass
package com.lhp.test;
public class Test extends A{
public static void main(String[] args) {
new Test().fun();
}
void fun(){
System.out.println(super.getClass().getName());
}
}
class A { }
首先,类Test和类A都没有重写getClass()方法,那么getClass()方法就是Object类中的原始方法。
而Object类中getClass()的作用是返回包名+当前运行时类名。
所以,super.getClass().getName() 输出的是 com.lhp.test.Test 。
若想得到父类的类名,应写成 super.getClass().getSuperclass() 。
Swing
Swing比AWT慢,因为Swing是基于AWT的Java程序,而AWT是基于本地方法的C/C++程序。
super
每个子类构造方法的第一条语句,都是隐式执行super(); ,所以父类构造器总是先于子类构造器执行。如果你想显式执行 super();,那么必须放在第一行。
Scanner
next() 取数据直到遇到空格或换行符
nextLine() 取数据直到遇到换行符
nextInt() 取数据直到遇到空格或换行符,然后转化为int。
Socket
ServerSocket (int port)
创建一个 serversocket 绑定在特定的端口,可用于监听某一个端口,常用于服务器端。
Socket(InetAddress address, int port)
创建一个 socket 流,连接到特定的端口和 ip 地址,用于客户端。
URL地址
Uniform Resoure Locator:统一资源定位器,即网页地址。
组成:协议(http) + 主机名(服务器域名) + 端口 + 文件
Serializable
每个保存在堆中的对象都有自己相应的状态(state),使用序列化Serializable可以将一个对象的状态保存到一个文件或数据库中去。
使用序列化Serializable和套接字,可以实现在网络中传输对象。
Java程序的种类
1 Servlet(服务器)
2 Applet(JavaWeb)
3 Application(独立运行)
Static
static方法不能调用非static变量,应该非static变量还没有被创建。
非static方法可以调用任意类型的成员变量。
”static”关键字是什么意思?
“static”关键字表明一个成员变量或成员方法可以在没有所属的类的实例的情况下被访问。
能否覆盖static方法?
方法覆盖是多态的一种形式,是基于运行时动态绑定的;而static方法是编译时静态绑定的,static方法与类的任何实例都不相关。
基本数据类型
有哪8种基本数据类型?
byte、short、int、long、float、double、boolean 和 char 。
什么是自动拆装箱?
自动装箱是Java编译器将基本数据类型转化为其对应的对象包装类型,比如:把 int 转化成 Integer 。
反之就是自动拆箱。