类--用来描述一组具有相同性质或者特征的复合数据类型
类中可以包含变量和方法
类中的变量或者方法是什么被使用的?
通过对象来调用类里面的变量和方法来使用
1.对象
1.对象是由我们自己定义的类来创建出来的。
2.对象实际上就是类的具体实现。
例如:修建大楼时绘制的设计图纸就是类,根据设计图纸修建起来的真实的可以住人的大楼就是对象。
类--抽象【抽取象什么一样的东西】--模板【设计图】
对象--实现--实例【楼房】
3.没有类就没有对象
4.一个类可以创建出多个对象
5.类是对象的模板,对象是类的真实表现
2.对象的作用?
调用类中的变量和方法
3.如何创建对象?[new]
1.当前类中--new+构造方法---this
2.其他类中--new+构造方法
格式 : new 构造方法( [参数值] );
public class Person {
//无参数构造方法
public Person(){
System.out.println("无参数构造方法");
}
//有参数构造方法
public Person(String name){
System.out.println("有参数构造方法");
}
//实例变量
public String test1;
//静态变量
public static String dox1;
测试
public class TestMain1 {
public static void main(String[] args) {
/*
//格式 : new 构造方法( [参数值] );
//创建Person类对象
//new Person();
//往往我们创建出来的对象需要当前类的数据类型对应的变量来保存这个对象
//int num1=100; //int数据类型 num1变量名称 100数据值
Person per1=new Person(); //Person数据类型 per1变量名称 new Person();数据值
Person per2=new Person("zhangsan");
4.对象访问变量
1.局部变量在其他类中不能访问
2.实例变量只能对象访问
3.静态变量类名访问,也可以对象访问
4.实例变量在同一个类的多个对象之间不能数据共享
静态变量在同一个类的多个对象之间能数据共享
// 1.局部变量在其他类中年不能访问。
// 2.实例变量只能对象访问
per1.test1="zhangsan";
System.out.println("实例变量=="+per1.test1);
String str1=per1.test1;
System.out.println("实例变量==str1=="+str1);
// 3.静态变量类名访问,可以对象访问
Person.dox1="lisi";
per2.dox1="wangu";
System.out.println("静态变量=="+Person.dox1);
System.out.println("静态变量=="+per2.dox1);
String name1=Person.dox1;
String name2=per2.dox1;
System.out.println("静态变量==name1=="+name1);
System.out.println("静态变量==name2=="+name1);
//实例变量在同一个类的多个对象之间不能数据共享
Person per1=new Person();
Person per2=new Person();
per1.test1="zhangsan";
per2.test1="lisi";
System.out.println("per1.test1=="+per1.test1);
System.out.println("per2.test1=="+per2.test1);
per1.test1="zhangsansan";
per2.test1="lisisi";
System.out.println("per1.test1=="+per1.test1);
System.out.println("per2.test1=="+per2.test1);
*/
Person per1=new Person();
Person per2=new Person();
per1.dox1="zhangsan";
per2.dox1="lisi";
System.out.println("per1.dox1=="+per1.dox1);
System.out.println("per2.dox1=="+per2.dox1);
per1.dox1="zhangsansan";
per2.dox1="lisisi";
System.out.println("per1.dox1=="+per1.dox1);
System.out.println("per2.dox1=="+per2.dox1);
}
}
5.对象访问方法
1.构造方法的访问—new
2.实例方法只能对象访问
3.静态方法类名访问,可以对象访问
4.有参数方法,需要传递参数【个数,类型】【要什么,给什么】
5.有返回值,方法体中的最后一句是return,返回数据值要与方法的返回值类型匹配,调用有返回值的方法需要定义变量来接收方法的返回值【给什么,收什么】
public class TestClass {
//无参数构造方法
public TestClass(){
System.out.println("无参数构造方法");
}
//有参数的构造方法
public TestClass(String name){
System.out.println("有参数构造方法--参数name=="+name);
}
//实例方法
public void shuiliMethod(){
System.out.println("实例方法方法");
}
//有参数的实例方法
public void shuiliMethod1(int id,String name){
System.out.println("实例方法--参数id="+id+";参数name="+name);
}
//有返回值,方法体中的最后一句是return,返回的数据值要与方法的返回值类型匹配
//有返回值的实例方法
public String shuiliMethod2(){
System.out.println("有返回值的实例方法");
return "zhangsan";
}
//有参数,有返回值的实例方法
public String shuiliMethod3(int id,String name){
System.out.println("有参数,有返回值的实例方法");
String info="id="+id+",name="+name;
return info;
}
//静态方法
public static void staticMethod(){
System.out.println("静态方法方法");
}
//有参数的静态方法
public static void staticMethod1(int id,String name,int age){
System.out.println("静态方法--参数id="+id+";参数name="+name+";参数age="+age);
}
//有返回值,方法体中的最后一句是return,返回的数据值要与方法的返回值类型匹配
//有返回值的静态方法
public static int staticMethod2(){
System.out.println("有返回值的静态方法");
return 1001;
}
//有参数,有返回值的静态方法
public static int staticMethod3(int id,String name,int age){
System.out.println("有参数,有返回值的静态方法");
int num=id+age;
return num;
}
}
6.对象的内存分配原理