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
*/