Java(7)类和对象

Java类和对象

类和对象简介

1、类是对象的一个模板,它描述一类对象的行为和状态。

2、对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态(属性)有:颜色、名字、品种;行为(方法)有:摇尾巴、叫、吃等。

创建类和对象及使用方法

public class HelloWorld{
  int age=2;
  String color;
  void methodFirst(){
  boolean gender=true;
  System.out.println(gender);
}
	for (int i=1;i<=10;i++){
  		int sum= i;
	}
}

HelloWorld a=new HelloWorld(); //创建实例对象
a.methodFirst(); //访问实例对象方法
System.out.println(a.age); //访问实例对象变量 

类包含的变量

  • 成员变量:定义在类中的变量是成员变量(如上面的age,color)

  • 局部变量:定义在方法中或者{}语句块里面的变量是局部变量 (如上面的gender,sum)

  • 静态变量:声明为static类型,也声明在类中,方法体之外。

    成员变量与局部变量的区别

    1、定义

    定义在类中的变量是成员变量

    定义在方法中或者{}语句块里面的变量是局部变量

    2、内存位置

    成员变量存储在内存的对象中(堆),只有new出来后才占用空间

    局部变量存储在栈内存的方法中

    3、声明周期不同

    成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失

    局部变量随着方法的运行而出现在栈中,随着方法的调用完弹栈而消失

    4、初始化不同

    成员变量因为在堆内存中,所有默认的初始化值

    局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。

java垃圾回收机制

成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失

局部变量随着方法的运行而出现在栈中,随着方法的调用完弹栈而消失

类作为形式参数

  • 源文件demo1.java
public class demo1{
	public static void main (String[] args){
		Student s=new Student();
		StudentDemo sd=new StudentDemo;
		sd.method(s);//形式参数是引用类型
	}
}
  • 源文件Student.java
public class Student{
	public void show(){
  		System.out.println(“I love you”);
	}
}
  • 源文件StudentDemo.java
public class StudentDemo{
	public void method(Student s){
		s.show();//类名作为形式参数要的其实是该类的对象
	}
}
//还有一点:类名作为返回值,返回的其实是该类的对象

包装类和toString

包装类

针对八种基本数据类型定义的称为包装类(封装类)

基本数据类型 包装类(注意大小写)
boolean Boolean
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
  • 装箱:基本数据类型包装成包装类的实例。
  • 拆箱:包装类转为基本数据类型
package day01;

public class Test01{
    public static void main(String[] args) {
        //手动装箱:
        int a=10;
        Integer b=new Integer(a); //等价于Integer b=new Integer(10);
        System.out.println(b);  //输出10
        //自动装箱:
        Integer c=10;

        //手动拆箱:
        Integer d=new Integer(20);
        int e=d.intValue();
        System.out.println(e);//输出20
        //自动拆箱:
        int f =d;
        
        //也可以通过传递字符串参数来进行装箱,前提是字符串的内容是对应包装类的数据类型
        Integer i=new Integer("30"); //不会出i错
        Integer g=new Integer("abc"); //编译不会报错,但是运行会出错。
    }
}
// 也可以对其它基本数据类型进行装箱拆箱

为什么有包装类,因为基本数据类型没有方法和属性,而包装类就是为了让其拥有方法和属性,实现对象化交互。

  • 主要作用1:使用包装类的xxx.parseFloat()方法将字符串转为其它基本类型,使用String.valueOf()方法将其它基本数据类型转为字符串
package day01;

public class Test01{
    public static void main(String[] args) {
        //字符串转到其它基本数据类型
        int a=Integer.parseInt("24");
        float b=Float.parseFloat("24.8");
        boolean c=Boolean.parseBoolean("false");

        //基本数据类型转为字符串
        String d=String.valueOf(34);
        String e=String.valueOf(false);
        String f=String.valueOf(24.8);
    }
}

toString()

toString()方法的作用是输出当前实例对象的内存地址,是继承自父类Object的方法(任何类都会继承父类Object)。如果要输出其它信息,可以在具体的类重写toString()方法

class Sport{

}
public class Test01{
    public static void main(String[] args) {
        Sport a=new Sport();
        System.out.println(a.toString());
        System.out.println(a); //跟有toString()的效果一样,都是返回对象的内存地址
    }
}
/*运行结果为:
day01.Sport@1b6d3586
day01.Sport@1b6d3586
*/
posted @ 2020-08-28 20:32  Whatever_It_Takes  阅读(157)  评论(0编辑  收藏  举报