static
由static 修饰的成员变量即为静态变量
成员变量分两种:1、实例变量,没有static修饰,属于对象,存储在堆中、有几个对象就有几份,通过引用、对象打点访问
2、静态变量、有static修饰,属于类,存储在方法区中,只有一份(因为只有一个类),通过类名来访问
输出静态变量常用 类名.变量名 ,而不用对象.变量名
何时用?不再更改,和对象共享的数据
静态变量一般不在构造方法中赋值,一般在静态块中赋值。
实例变量(没有static修饰的成员变量)在构造方法中赋值。
static final
常量= 静态常量
public static final int PI =3.1415926;
声明同时就要赋值
便于维护,不用写具体数值。数值一旦设置就不变
通过类名.常量来访问。常量名所有字母都大写,多个单词用小下划线分割
new对象
new对象时调用构造方法,只要new,堆中就会分配对象
Cloneable 拷贝出一个新的相同类型的对象,并且属性值和原来对象相同
继承Cloneable接口后需要实现方法CloneNotSupportedException 需要被克隆的类实现,如果有异常则抛出异常。
Clonable接口是一个标记接口,不需要实现任何方法,里面也没有要实现的方法
获取对象的真正类型:.getClass()
获取对象的哈希码,人们认为同一个类的不同对象的哈希码是唯一的:.hashCode()
== 号对于引用数据类型来说,是比较地址是否相同
不能为null.equals(可以为null)
public String toString (){} 的作用是输出对象的局部变量的值
String
字符串是常量,值不可以改变。
字符串被final修饰,是一个最终类,不能被继承
字符串底层是字节数组
字符串是在方法区中的固定值,由栈或者堆中的变量或类指向
String str = “a”+“b”;在编译期间就已经变成"ab",没有真正拼接字符串
String str1 = “a”; str1 = str1+“b”; str1在编译时是变量,拼接了字符串