黑马程序员 java入门学习的小知识点归纳(一)

时间:2023-02-17 09:15:48

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

有C++基础,向java学习过程中应该关注的一些小知识点归纳,这一次只做这些,下一次做关于多线程的基本内容;由于作者也只是菜鸟,所以欢迎各位纠错哈!谢谢啦!

1、匿名对象

定义:没有名称的对象;

用途:1、多作为实参进行值传递,使用完之后会变成垃圾被自动回收;

如:

Thread thread = new Thread(new Runnable(){
	run(){}
}).start();
其中的new Runnable(){}就是匿名对象;

2、若某个对象的方法只需要调用一次时,也可以使用;


2、构造代码块与静态代码块

描述:构造代码块是类中的一段代码,通常用{}包裹;在对象建立时,优先于构造函数执行;

       静态代码块是在构造代码块的基础上使用static修饰符修饰;

      它们可以对任意该类的对象进行统一的初始化;并且优先于构造函数执行;

区别:静态代码块只在类加载时执行一次;构造代码块则在每一个对象构建时都要执行一次;

如:

class Car{
	{
	//构造代码块内容
	}
}
class Car{
	static{
	//静态代码块内容
	}
}

3、static静态关键字

1、用于修饰成员时有以下特点:

随着类的加载而加载;当类消失时,被修饰的成员才消失;

优先于对象存在;可以被对象共享;也可以被类名直接调用;

注意:静态方法只能访问静态成员;

    静态方法中不能使用this、super关键字;

    主函数是静态的;

2、什么时候使用静态?

成员变量:类具有的共同属性值时;

成员方法:类具有的共同属性方法;

  当功能内部没有访问到非静态成员时,该功能可以定义为静态,便于使用;

通常将一些多个类都涉及的相同功能方法封装到一个类中,并将这些方法声明为静态成员,这样就可以在使用时不

再构建类对象。为了更严谨,通常把构造函数定义为私有成员方法。


4、内部类与静态内部类

1、内部类可以定义多个,可以直接访问外部类的所有成员;

2、外部类要访问内部类必须先建立内部类对象

3、第三方类要建立某个类的非私有、非静态内部类的方式:

Outer.Inner 对象名 = new Outer().new Inner();

4、内部类可以私有,但是不多用;

5、与第1点关联的是,内部类只有在没有定义与外部类相同成员的情况下才可以任意访问外部类成员;

其形式如:Outer.this.成员

6、内部类被static修饰之后具有静态属性,只能访问外部类静态成员;

7、内部类若定义了静态成员,则该内部类必须是静态的;

8、内部类若是定义在类的局部位置上,只能访问局部被final修饰的局部变量或方法;


5、final关键字

修饰类,则该类不能被继承;

修饰方法,则该方法不能被覆写;

修饰变量,则该变量变为常量,只能赋值一次;


6、接口(Interface)

1、接口中定义的内容一般为:

常量:public static final 常量名称;

方法:public abstract-------(抽象方法)

2、当定义接口时,若没有给成员加上修饰符,编译器会自动添加;但是方法的返回值类型必须自己定义;

3、接口可以被多实现,即:一个类可以实现多个接口(算是java对于类不能多继承的一种补充);

4、接口与接口直接也可以继承,可以多继承,这样可以降低耦合性;


7、聚集关系

聚合:每一个元素都是一个组成部分,但并非缺一不可;

组合:缺一不可;


8、多态

1、编译看左,运行看右;

编译时,若在发生父类的引用(即 由子类构造函数创建的父类对象)调用成员方法,参阅引用型对象所属类中是否有这个被调用的方法,有 则编译通过;

运行时,该引用实际调用的还是子类中对应的方法;

2、成员变量和静态方法,无论编译还是运行,都参照父类进行;

如:

class Father 
{	
	static String handsome = "handsome";
	void height(){
		System.out.println("the height of father is 190cm."+"and father is"+handsome);
	}
	
	static String gethandsome(){
		return handsome;
	}
}

class Son extends Father
{
	static String handsome = "normal";
	void height(){
		System.out.println("the height of son is 185cm"+"and son is"+handsome);
	}

}


class DemoExtends
{
	public static void main(String[] args) {
	Father father= new Son();
	father.height();
	System.out.println(father.gethandsome());
	
	}
}
结果显示如下:

黑马程序员 java入门学习的小知识点归纳(一)


黑马程序员 java入门学习的小知识点归纳(一)

黑马程序员 java入门学习的小知识点归纳(一)

9、单例设计模式

需求目标:保证一个类在内存中只存在一个对象

1、为了避免其他程序过多建立该类对象,首先要禁止它们建立该类对象;

2、为了让其他程序可以访问该类对象,需要在本类中自定义一个对象;

3、为了方便访问,可以对外提供一些访问方式;

代码实现:

1、构造函数私有化;

2、在类中创建本类对象;

3、提空一个可以获得上述定义对象的方法:静态方法。故而该对象也该定义成静态对象;

两种形式:

/*
饿汉式单利设计模式
*/
class Single{
	private Single(){}
	private Static final Single s = new Single();
	public Static Single getInstance(){
		return s;
	}
}

/*
懒汉式单利设计模式
*/
class Single{
	private Single(){}
	private Static final Single s = null;
	public Static Single getInstance(){
		if(s == null)
			s = new Single();
		return s;
	}
}

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

详细请查看:<a href="http://edu.csdn.net" target="blank"> http://edu.csdn.net </a>