public class MethodDemo1 {
public MethodDemo1() {
System.out.println(123);
}
public MethodDemo1(int i) {
}
public static void main(String[] args) {
Random r = new Random();
}
}
特殊的方法:构造器(构造方法)
- 1.这个方法名字 -- 必须和类名完全一样
- 2.没有返回值,连void也写
- 3.不能用static修饰
我们可以通过:类名称 对象名称 = new 构造方法 的方式创建一个对象。例如:Random r = new Random(); 其中关键字new就是表示创建了一个对象。
Student st[] =new Student[5]; //创建一个Student数组。该数组的默认值是null。
st[0]=new Student(); // 此时为数组中的第一个对象赋值。
有的人一定想问,为什么st[0]为啥没有声明他的类型。因为上面已经声明(Student st[] )
面试题:生成一副不带大小王的扑克牌
public class Poker {
String suit;// 花色
String count;// 点数
public void giveMe() {
String hs[] = {"红桃","黑桃","方片","草花"};
String ds[] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
// 写一个循环,生成一副扑克
Poker pokers[] = new Poker[52];
int index = 0;
// 遍历数组,取到hs[]和ds[]的所有组合,给Poker对象赋值,然后存入pokers[]
for(int i = 0;i < hs.length;i++) {
for(int j = 0;j < ds.length;j++) {
pokers[index] = new Poker(); //对于小白来说,该处是重点
pokers[index].suit = hs[i];
pokers[index].count = ds[j];
index++;
}
}
for(Poker p : pokers) {
System.out.println(p.suit+p.count);
}
}
public static void main(String[] args) {
Poker p = new Poker();
p.giveMe();
}
}
匿名对象
public class Demo1 {
public void test1() {
System.out.println(123);
}
public void test2() {
System.out.println(456);
}
public static void main(String[] args) {
// 匿名对象 : 没有引用指向的对象,它只能使用一次
// Demo1 d = new Demo1();
// d.test1();
// d.test2();
new Demo1().test1();
new Demo1().test2();
// 垃圾自动回收机制(GC)
// JVM会把堆中没有引用指向的对象视为垃圾对象,当这个对象执行完对应的工作,JVM虚拟机
// 会自动找到这些垃圾对象调用其finalize()回收内存
}
}
谈谈垃圾自动回收(gc):JVM会把那些堆内存中没有引用的对象视为垃圾对象,这些对象在执行完指定工作后,JVM会自动找到这些垃圾对象,调用其finalize()方法回收其内存。
产生没有引用的对象:
- new Demo1().test2();
Java三大或四大特性
Java面相对象特性:继承,封装,多态,抽象(四大)
Java面相对象特性:继承,封装,多态(四大)
抽象(程序员将现实实物抽象为脑中概念模型)
封装 :将一套功能组织成一个方法,将一套方法加一套属性组织到一个类,将一套类组织到一个包中
访问权限修饰符
public : 公有,工程中可见 能修饰类,方法,属性(全局变量) * protected : 受保护的,当前包可见,跨包子类可见。能修饰方法和属性。 * 能修饰方法和属性 * 【friendly,default】:默认的,跨包不可见 * 能修饰类,方法,属性(全局变量) * private : 私有的,只有当前类可见 * 能修饰方法和属性 */
JavaBean(实体类) :
- 1.有无参构造器(必要)
- 2.属性全部私有
- 3.有公有的get(获取)和set(修改)方法
static关键字
- 能修饰方法和属性(全局变量,修饰的全局变量;类变量,静态变量)
- 不能修饰类,构造方法,局部变量。
- static修饰的方法和属性,可以通过类名直接调用
- 静态方法只能直接访问static方法和属性,不能直接调用非静态方法和属性。
- 静态成员归这个类的所有对象共享。
单例模式
//饿汉模式
class Singleton {
private Singleton(){}
private static Singleton s = new Singleton();
public static Singleton getSingleton(){
return s;
}
}
//懒汉模式
class Singleton {
private Singleton(){}
private static Singleton s ;
public static Singleton getSingleton(){
if(s ==null){
s= new Singleton();
}
return s;
}
}
Java中是单继承模式:一个父类可以有多个子类,但是一个子类只能有一个父类。
继承:public class A extends B{}
A类称为子类,B类称为父类。A类具有B类拥有的属性和方法,除了构造方法、私有属性和私有方法。
子类可以添加自由独有的属性和方法来拓展功能。
继承带来的优点:
是一种代码重用的重要手段,也是实现“开闭原则”的基础,同时子类还可以添加自己独有的属性和方法,来拓展父类功能开闭原则,对拓展开放,对修改关闭。
网友评论