类--用来描述一组具有相同性质或者特征的复合数据类型
类中可以包含变量和方法
类中的变量或者方法是什么被使用的?
通过对象来调用类里面的变量和方法来使用
1.对象
1.对象是由自己定义的类来创建出来的
2.对象实际就是类的具体实现
例如:修建大楼绘制的设计图纸就是类,根据设计图纸修建起来的真实的可以住人的大楼就是象。
类--抽象【抽取象什么一样的东西】--模板【设计图】
对象--实现--实例【真实的楼】
3.没有类就没有对象
4.一个类可以创建出多个对象
5.类是对象的模板,对象是类的真实表现
2.对象的作用?
调用类中的变量和方法
3.如何创建对象?[new]
1.当前类中--new+构造方法---this
2.其他类中--new+构造方法
格式 : new 构造方法( [参数值] );
package com.object.test1;
public class Test {
public static void main(String[] args) {
/*
//格式:new 构造方法([参数值])
//创建Person类对象
Person per1=new Person();
Person per2=new Person("zhangsan");
}
}
4.对象访问变量
1.局部变量在其他类中年不能访问。
2.实例变量只能对象访问
3.静态变量可以类名访问,也可以对象访问
4.实例变量在听一个类的多个对象之间不能数据共享,而静态类可以。
创建变量
package com.object.test1;
/**
* 个人信息java类
* @author air
*
*/
public class Person {
//实例变量
public String test1;
//静态变量
public static String dox1;
}
访问变量
package com.object.test1;
public class Test {
public static void main(String[] args) {
/*
//格式:new 构造方法([参数值])
//创建Person类对象
Person per1=new Person();
Person per2=new Person("zhangsan");
//局部变量不能在其他类中访问
//实例变量只能对象访问
per1.test1="zhangsan";
System.out.println("实例变量=="+per1.test1);
String str1=per1.test1;
System.out.println("实例变量str1=="+str1);
//静态变量可以类名访问,也可以对象访问
Person.dox1="lisi";
per2.dox1="zhaoliu";
System.out.println("静态变量=="+Person.dox1);
System.out.println("静态变量per2=="+per2.dox1);
String name=Person.dox1;
String name2=per2.dox1;
//实例变量在同一个类中的多个对象之间不能数据共享,静态变量在同一个类中的多个对象之间可以数据共享
*/
/*
//实例变量在同一个类中发的多个对象之间不能共享数据
Person per1=new Person();
Person per2=new Person();
per1.test1="zhangsan";
per2.test1="lisi";
System.out.println("per1.test1=="+per1.test1);
System.out.println("per1.test1=="+per2.test1);
per1.test1="zhangsansan";
per2.test1="lisisi";
System.out.println("per1.test1=="+per1.test1);
System.out.println("per1.test1=="+per2.test1);
*/
//静态变量在同一个类中的多个对象之间可以数据共享
Person per1=new Person();
Person per2=new Person();
per1.dox1="wahaha";
per2.dox1="yibao";
System.out.println("per1.dox=="+per1.dox1);
System.out.println("per2.dox=="+per2.dox1);
per1.dox1="zhangsan";
per2.dox1="wawu";
System.out.println("per1.dox=="+per1.dox1);
System.out.println("per2.dox=="+per2.dox1);
}
}
5.对象访问方法
1.构造方法的访问---new
2.实例方法只能对象访问
3.静态方法可以类名访问,也可以对象访问
4.有参数的方法需要传参数【个数 类型】【要什么,给什么】
5.有返回值的方法,在方法体中的最后一句时return,返回的数据值与方法的返回值类型匹配,
调用返回值的方法需要定义变量来接受方法的返回值【给什么,收什么】
例如:
创建方法
package com.object.test2;
public class TestClass {
//构造方法
public TestClass(){
System.out.println("无参数的构造方法");
}
public TestClass(String name){
System.out.println("有参数的构造方法name=="+name);
}
//实例方法
public void shiliMthod1(){
System.out.println("无参数的实例方法");
}
public void shiliMthod2(int id,String name){
System.out.println("实例方法--参数id=="+id+";参数name="+name);
}
public String shiliMthod3(){
System.out.println("有返回值的实例方法");
return "zhangsan";
}
public String shiliMthod4(int id,String name){
System.out.println("有参数,有返回值的实例方法");
String stu="id="+id+",name="+name;
return stu;
}
//静态方法
//无参数的静态方法
public static void staticMthod1(){
System.out.println("无参数的静态方法");
}
//有参数的静态放法
public static void staticMthod2(int id,String name){
System.out.println("静态方法--参数id=="+id+";参数name="+name);
}
//有返回值,方法体中的最后一句是return,返回的数据值要与方法的返回值类型匹配
//有返回值的静态方法
public static int staticMethod3(){
System.out.println("有返回值的静态方法");
return 100;
}
//有参数,有返回值的静态方法
public static int staticMethod4(int id,int age){
System.out.println("有返回值的静态方法");
int num=id+age;
return num;
}
}
访问方法
package com.object.test2;
public class Main {
public static void main(String[] args) {
//构造方法的访问--new
TestClass tc1=new TestClass();
//实例方法只能对象访问
tc1.shiliMthod1();
//静态方法可以对象访问,也可以类名访问
TestClass.staticMthod1();
tc1.staticMthod1();
//有参数的方法,需要传递参数【个数,类型】
//1.传值
//构造方法传值
TestClass tc2=new TestClass("zhangsan");
//实例方法传值
tc2.shiliMthod2(1001, "zhangsan");
//静态方法传值
TestClass.staticMthod2(1002, "lisisi");
//2.传变量
//构造方法变量
String name="zhangsan";
TestClass tc3=new TestClass(name);
//实例方法传变量
int id1=1003;
String name1="lisi";
tc3.shiliMthod2(id1, name1);
//静态方法传变量
int id2=1004;
String name2="zhaoliu";
TestClass.staticMthod2(id2, name2);
//调用有返回值的方法需要定义变量来接收方法的返回值
TestClass tc4=new TestClass();
//有返回值的实例方法
String info1=tc4.shiliMthod3();
System.out.println("shuiliMethod2方法的返回值"+info1);
int intvalue=TestClass.staticMethod3();
System.out.println("staticMethod3方法的返回值"+intvalue);
//有参数,有返回值的静态方法
TestClass tc5=new TestClass();
String strinfo1=tc5.shiliMthod4(1001,"zhaolu");
System.out.println("shuiliMethod2方法的结果"+strinfo1);
int numint=TestClass.staticMethod4(1006,27);
System.out.println("staticMethod3方法的结果"+numint);
}
}
6.对象的内存分配原理