JAVA的一些笔记

/*一般函数与构造函数的区别
构造函数:对象创建时,就会调用与之对应的构造函数,对对象进行初始化
一般函数:对象创建时,需要函数功能时才调用


构造函数:一个对象对象创建时,只调用一次
一般函数:对象创建时,可以被调用很多次
*/


/*当成员变量和局部变量重名时。可以用this来区分
this:代表对象。 代表那个对象?当前对象
this就是所在函数所属对象的引用
简单的说:那个对象调用了this所在的函数,this就代表那个对象
    this也可以用于在构造函数中调用其他构造函数
   注意:只能定义在构造函数的第一行。因为初始化函数要先执行
   
public Demo(String name,int age)
{
	this.name=name;
	this.age=age;
}
public boolean bijiao(Demo p)
{
	return this.age=p.age;
}
pyblic static void main(String[] args)
{
Demo p1=new Demo("超霸",18);
Demo p2=new Demo("暮雪",20);
	p1.bijiao(p2);
}

*/

/*,String name ///成员变量,实例变量

static String name //静态变量,类变量

成员变量and静态变量的区别?
1,两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象被回收而释放
静态变量随着类的加载而存在,随着类的消失而消失
2,调用方式不同
成员变量只能被对象调用
静态变量可以被对象调用,还可以被类名调用
3,数据存储位置不同
成员变量数据存储在堆内存中,所以也叫对象的特有数据
静态变量存储在方法区的静态区,所以也叫对象的共享数据
*/

/*静态使用的注意事项
1,静态方法只能访问静态成员。(非静态既可以访问静态,又可以访问非静态)
2,静态方法中不可以使用this或者super关键字
3.主函数是静态的
静态在方法区的静态区,栈内
4.静态什么时候用?
1静态变量

2.静态方法
*/
1

/*extends继承 implements接口继承   public class 类名 implements 接口A,接口B{类体}
public interface 接口a extends 接口B{
	常量定义   方法声明
}
class 子类 extends 父类 

*/
class Person
{
	String name;
int age;
}

class Student extends Person
{
//String name;
//int age;
void study()
	{
	System.out.println("good good student study");
}
}


/*abstract 抽象类and接口
abstract class 类名{{类体}
abstract void show();
抽象类:笼统,模糊,看不清。不具体
特点
1.方法只有声明没有实现时。该方法就是抽象方法。需要被abstract
抽象方法必须定义在抽象类中
2.抽象类不可以被实例化,为什么?因为调用抽象方法没意义
3.抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化
否则,这个子类还是抽象类。

1.抽象类中有构造函数吗
有。用于给子类对象进行初始化
2.抽象类可以不定义抽象方法吗?
可以的。但是很少见,目的就是不让该类创建对象。AWT的适配器对象就是这种类
通过这个类中的方法有方法体。但是却没有内容
abstract  class Demo{
	void show1()
	{}
	void show2()
	{}
}
3.抽象函数不可以和那些关键字共存?
************抽象方法要被覆盖
private 不行
static 不行  静态无法被覆盖  静态不需要对象。无意义
final 不行。。最终的,无法被覆盖
4.抽象类和一般类的区别
相同点:
      抽象类和一般类都是用来描述事物的。都在内部定了成员
	  不同:
	  1.一般类有足够的信息描述事物
	  抽象类描述的信息有可能不足。
	  2.一般类中不能定义抽象方法。只能定义非抽象方法
	  抽象类中可定义抽象方法。同时科院定义非抽象方法
	  3.一般类可以被实例化
	  抽象类不可以被实例化
5.抽象类一定是个父类吗?
是的。因为需要子类覆盖其方法后才可以对子类实例化


定义接口关键字  
interface Demo
{	常量定义   方法声明
	abstract void show1();
}
对于接口中的常见的成员,而且这些成员都有固定的修饰符
全局常量 public static  final
抽象方法 public abstract
接口中的成员都是公共权限
interface 类名{
接口的定义
类与类之间是继承关系 类与接口直接是实现关系
接口不可以实例化
只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化
否则这个子类就是一个抽象类
}

抽象类和接口的异同点
不同点:1.抽象类需要被继承,而且只能单继承
接口需要被实现。而且是多实现。
2.抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。
接口中只能定义抽象方法,必须由子类去实现
3.抽象类的继承是is a关系,在定义该体系的基本共性内容
接口的实现是like a关系,在定义体系额外功能。
*/


/*对象的多态性

class 动物
{}
class 猫 extends 动物
{}
class 狗 extends 动物
{}
猫 x= new 猫();
动物 X=new 猫();  一个对象。2中形态
猫这类事物即具备猫的形态,又具备着动物的形态。这就是对象的多态性
简单说:就是一个对象对应着不同类型


多态在代码中的体现
父类或者接口的引用指向其子类的对象





*/


/*内存的划分

1寄存器
2本地方法区
3方法区
4栈内存
    存储的都是局部变量,局部变量一结束就消失
	变量一旦离开作用域一旦结束。改变量就自动释放
	生命周期短,更新快
5堆内存

存储的是数组和对象(其实数组就是对象),凡是new建立的都在堆中。
实体用来封装存储对象多个数据。
堆特点
1.每个实体都有首地址
2.堆内存中没一个变量都有默认初始化值,根据类型的不同而不同
3.垃圾回收机制





public class CalcDemo1 {
	public static void main(String[] args) {
		for(int x=0;x<5;x++)
		{
			
		}
		System.out.println(x);
	}
}


*/


/*设计模式
对问题行之有效的解决方式。其实它是一中思想
单例设计模式
解决的问题:就是可以保证一个类在内存中的对象唯一性
如:对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性
如何保证对象唯一性?
1.不允许其他程序用new创建该类对象。
2.在该类创建一个本类实例
3.对外提供一个方法让其他程序可以获取该对象
步骤
私有化该类构造函数
通过new在本类中创建一个本类对象
定义一个公有方法,讲创建的对象返回
*/

/*单列设计模式。保证对象唯一性



class  SingleDemo
{
	public static void main(String[] args) 
	{

	Singel t1=Singel.getInstance();
Singel t2=Singel.getInstance();
t1.setNum(10);
t2.setNum(20);
System.out.println(t1.getNum());
System.out.println(t2.getNum());
	}
}
对象唯一性实现方法
class Singel  //饿汉式  类一加载。对象就已经存在了。。一般用这个
{
	private int num;
	private static Singel s=new Singel();
	private Singel(){}
	public static Singel getInstance()
	{
		return s;
	}
public void setNum(int num)
{
	this.num=num;
}
public int getNum()
	{
return num;}
}

class Singel2  //类加载进来,没有对象。只有调用get方法时,才会创建对象  懒汉式
{
	private static Singel2 s=null;
	private Singe12(){}
	public static Singel2 getinfo()
	{
		if(s==null)
			s=new Singel2();
		return s;
	}

}

*/


/*Thread多线程  继承   重写run方法。代码放在run中   start启动线程并调用run方法


*/

  

一万年太久,只争朝夕!
原文地址:https://www.cnblogs.com/chaoba/p/6763349.html