- 什么是对象,什么是类?
类:是一个抽象的概念,表示的是一类事物所拥有的共性(属性、方法)。
对象:是类的具体(实例),对象不仅拥有类的属性和方法(private除外),还有自己专属的属性与方法。
比如:人是一个类,
那么对象就可以有男人,女人,学生,老板等等。
这里类是女朋友
package javaBasis1;
//听说你缺女票,new一个吧
public class girlfriend{
//这三个是成员变量
int age;//年龄属性
int height; //身高属性
int weight;//体重属性
public girlfriend(String name) {
name="翠花";
System.out.println("名字什么的才不可能是"+name+"呢");
}
//女生的化妆行为
public void make_up() {
//这个是局部变量
int time;//化妆时间???
System.out.println("没人能碰我的妆,哪怕是我自己!");
}
public void showgirlfriend(int age,int height,int weight) {
System.out.println("My girlfriend:");
System.out.println("年龄:"+age);
System.out.println("身高:"+height);
System.out.println("体重:"+weight);
}
public static void main(String[] args) {
girlfriend one=new girlfriend(null);//‘=’的左边叫做声明对象,右边叫做实例化对象
//当对象被实例化后,会调用构造函数初始化对象。(null)表示调用自定义的那个构造函数。
one.age=18;
one.height=166;
one.weight=99;
one.showgirlfriend(one.age, one.height, one.weight);
}
}
执行结果:
名字什么的才不可能是翠花呢
My girlfriend:
年龄:18
身高:166
体重:99
一个类可以包含成员变量、类变量和局部变量:
成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
每个类都有构造方法,如果你自己没有写构造方法的话,java编译器会为该类提供一个默认的构造方法。构造方法与类同名,自己写的可以包含参数,默认的构造方法是无参的。
-
什么是对象的引用?
以1中的程序为列girlfriend one=new girlfriend(null);
这里面new girlfriend
表示以girlfriend为模板,在堆空间中创建一个girlfriend类。
而girlfriend one
表示声明一个girlfriend类型的引用对象one
,这里的‘=’的意思就是使对象引用one
指向创建(new的)的对象girlfriend。
对对象和引用的总结:
- 一个对象引用可以指向0个或者1个对象
即girlfriend one=new girlfriend(null);
(指向一个对象)
girlfriend two;
(指向0个对象) - 一个对象可以被多个对象引用指向
即girlfriend one=new girlfriend(null);
girlfriend two=one;
girlfriend three=one;
- Java对象和引用的关系可以说是互相关联,却又彼此独立。彼此独立主要表现在:引用是可以改变的,它可以指向别的对象。
- 从存储空间上来说,对象和引用也是独立的,它们存储在不同的地方,对象一般存储在堆中,而引用存储在速度更快的堆栈中。
- 参数传递。Java只有一种参数传递方式:那就是按值传递,即Java中传递任何东西都是传值。如果传入方法的是基本类型的东西,你就得到此基本类型的一份拷贝。如果是传递引用,就得到引用的拷贝。
例如:
package javaBasis1;
public class 引用demo {
//传递引用
public void demo1(StringBuffer s) {
s.append(" world");
}
public void demo2(StringBuffer s) {
s=new StringBuffer(" agin");
}
//传递基本类型
public void demo3(int num) {
num=100;
}
public static void main(String[] args) {
引用demo demo=new 引用demo();
StringBuffer s=new StringBuffer("hello");
demo.demo1(s);
System.out.println(s);
demo.demo2(s);
System.out.println(s);
//基本类型demo
int num=1;
demo.demo3(num);
System.out.println(num);
}
}
运行结果:
hello world
hello world
1