java学习笔记-【类与对象】

对象在内存中的存在形式

Cat cat = new Cat();  //创建一个类
cat.name = "Tom";  
cat.ages = 3; 
cat.color = "yellow";

属性(成员变量)

基本介绍

  1. 成员变量=属性=field(字段)(成员变量是用来表示属性的)
    eg:Cat(name,ages,color);
  2. 属性是类的一个组成部分,一般是基本数据类型,也可以是引用数据类型(对象,数组);

注意事项

  1. 属性的定义语法与变量相同:
    eg:[[访问修饰符 ]] 属性类型 属性名
    访问修饰符:控制属性的访问范围
  2. 属性的定义类型可以是任何类型,包括基本类型和引用类型
  3. 属性如果不赋值,有默认值;
public class PropertiesDetail {  
    public static void main(String[] args) {  
        // 创建一个Person对象  
        Person p = new Person();  
       
        System.out.println("年龄:" + p.age);  
        System.out.println("姓名:" + p.name);  
        System.out.println("工资:" + p.sal);  
  
    }  
}  
class Person{  
    int age;  
    String name;  
    double sal;  
    boolean isPass;  
}
默认值:年龄:0
姓名:null
工资:0.0

创建对象

  1. 先声明,在创建
    Cat cat;//声明对象
    cat = new Cat();//创建
  2. 直接创建
    Cat cat=new Cat();

访问属性

对象名.属性名;

java 创建对象的流程简单分析

  1. 先加载person类的信息(属性和方法信息,只会加载一次)
  2. 在堆中分配空间,进行默认初始化
  3. 把地址赋给p1,p1 就指向对象
  4. 进行指定初始化;

成员方法

方法类似于函数

基本介绍

类除了一些属性外,还有一些行为

public class Method {  
    public static void main(String[] args) {  
        Person01 p = new Person01();  
        p.speak();  
        p.cal();  
        p.cal02(10);  
        int a=p.cal03(0,200);  
        System.out.println(a);  
    }  
}  

class Person01 {  
    String name;  
    int age;  
    public void speak() {//speak 是方法名,speak后的括号内是形参列表,  
        // 大括号里面是方法体,写要执行的代码  
        System.out.println("我是一个好人");  
    }  
    public void cal(){  
        int  res=0;  
  
        for(int i=1;i<=100;i++){  
            res+=i;  
        }  
        System.out.println("1到100的和是"+res);  
    }  
    public void cal02(int n){  
        int res=0;  
        for(int i=1;i<=n;i++){  
            res+=i;  
        }  
  
        System.out.println("1到"+n+"的和是"+res);  
    }  
    public int  cal03(int m,int n){  
  
        int res=0;  
        for(int i=m;i<=n;i++){  
            res+=i;  
        }  
  
        return res;  
    }  

}

方法的调用机制

方法的定义

访问修饰符 返回的数据类型 方法名(形参列表){

}

注意事项

访问修饰符(作用是控制方法使用的范围)

如果不写,默认访问。(有四种:public,protected,private,默认);

  1. 最多有一个返回值
  2. 返回类型可用是任何类型,包括引用类型;
  3. 命名遵循小驼峰命名法;
  4. 调用带参数的方法时,一定对应着参数列表传入相同类型或兼容类型的参数
  5. 方法不能嵌套;

调用细节

  1. 同一个类中的方法调用,直接调用即可;
	public class MethodDetial {  
    public static void main(String[] args) {  
        A a = new A();  
        a.sayOk();  
    }  
}  
class A{  
    public void print(int n){  
        System.out.println("print()方法被调用 n="+n);  
    }  
    public void sayOk(){  
        print(10);//调用print;  
    }  
}
  1. 跨类中的方法A类调用B类:需要通过对象名调用;
	public class MethodDetial {  
    public static void main(String[] args) {  
        A a = new A();  
        a.m1();  
    }  
}  
class A{  
    public void m1(){  
        B b=new B();  
        b.hi();  
    }  
}  
class B{  
    public void hi(){  
        System.out.println("B类中hi()被调用");  
    }  
}
  1. 跨类的方法调用和方法的访问修饰符相关

成员方法传参机制

swap函数

public class Swap {  
    public static void main(String[] args) {  
        int x = 10;  
        int y = 20;  
        SS obj=new SS();  
        obj.swap(x, y);  
        System.out.println("x = " + x + ", y = " + y);  
    }  
  
}  
class SS{  
    public void swap(int a, int b) {  
        System.out.println("Before swapping: a = " + a + ", b = " + b);  
        int temp = a;  
        a = b;  
        b = temp;  
        System.out.println("After swapping: a = " + a + ", b = " + b );  
    }  
}
运行结果:
Before swapping: a = 10, b = 20
After swapping: a = 20, b = 10
x = 10, y = 20//改变的只是swap中的a,b;

克隆对象

public class CloneClass {  
    public static void main(String[] args) {  
        Person p=new Person();  
        p.name="mainl";  
        p.age=12;  
  
        MyTools tools=new MyTools();  
        Person p2=tools.copyPerson(p);  
  
        System.out.println("p的属性:"+"name= "+p.name+" age="+p.age);  
        System.out.println("p2的属性:"+"name= "+p2.name+" age="+p2.age);  
        System.out.println(p==p2);  
    }  
}  
  
class Person{  
    String name;  
    int age;  
  
}  
class MyTools{  
    public Person copyPerson(Person p){  
        Person p2=new Person();  
        p2.name=p.name;  
        p2.age=p.age;  
  
        return p2;  
    }  
}
  • 22
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值