引用

 

1.1 引用传递

也称为传地址。方法调用时,实际参数的引用(地址,而不是参数的值)被传递给方法中相对应的形式参数,函数接收的是原始值的内存地址;
在方法执行中,形参和实参内容相同,指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象

2.内部类和外部类可进行私有属性访问

class Outer{ //外部类
    private String msg="hello";
    class Inner{ //内部类
        private int count=10;
        public void m(){ //内部类调用外部类
            msg="hello";
        }
    }
    public void mm(){ //外部类调用内部类
        new Inner().count=10;
    }
}
public class Lianl {
    public static void main(String[] args) {
    }
}

3.代码块

class Person{
    public Person(){
        System.out.println("构造方法");
    }
    {
        System.out.println("构造块");
    }
    static{
            System.out.println("静态块"); //静态块只运行一次就停止
        }
}
public class Lianx {
    public static void main(String[] args) {
        Person p=new Person(); //静态块==>构造快==>构造方法
        Person p1=new Person(); //静态块==>构造快==>构造方法==>构造快==>构造方法
        Person p2=new Person(); //静态块==>构造快==>构造方法==>构造快==>构造方法==>构造快==>构造方法
        //System.out.println();
    }
}

4.类是对象的模板,而对象是类的实例。对象是根据类的定义创建的。类是由属性和方法组成的属性中定义类的具体信息(变量),方法是一些操作的行为。属性有些书中也称为成员。

class Person{
    String name;
    int tellNumber;
    //由主方法调用的方法必须加上static,
    //如果由对象调用的方法定义时不加static,如果不是由对象调用的方法才加上static
    public String say(){ 
        return "我的名字是:"+name+",  我的手机号是:"+tellNumber;
    }
}
public class Dy {
    public static void main(String[] args) {
        
    }
}

 

5.封装性初步声明并实例化对象:类名  对象名=new 类名();

    分步完成语法:声明对象:类名 对象名=null;

           实例化对象:对象名=new 类名();

    对象.属性:表示调用类中的属性。

    对象.方法():表示调用类中的方法。

package oracle.ly.com;
class Person{
    String name;
    int age;
    public String say(){
        return "姓名:"+name+", 年龄:"+age;
    }
}
public class Dy {
    public static void main(String[] args) {
        Person per=null;
        per=new Person();
        //Person per=new Person(); //实例化
        per.name="Allen"; //通过对象调用属性
        per.age=22; //通过对象调用属性
        String str=per.say(); //通过对象调用方法
        System.out.println(str);
        /**
         * 分析以上代码:
         * 先给出内存空间的两块区域:堆内存和栈内存
         * 堆内存:保存对象的真正数据,都是每一个对象的属性内容,需要使用new关键字开辟。
         * 栈内存:保存的是一块堆内存的空间地址。
         * 注意:堆内存开辟一块空间(对象实例化),只要在堆内存开辟一块空间,必须用new关键字。
         * 经典异常:java.lang.NullPointetException   抛NPE(空指针、空指向)
         * 
         */
    }
}    

6. 没有栈内存指向的堆内存对象称之为垃圾。GC垃圾回收器,会不定期的清理垃圾。

class Person{
    String name;
    int age;
    public String say(){
        return "姓名:"+name+", 年龄:"+age;
    }
}
public class Dy {
    public static void main(String[] args) {
        Person per=null;
        per=new Person();
        //Person per=new Person(); 
        per.name="Allen"; 
        per.age=22; 
        Person per2=new Person();
        per2.name="Smith";
        per2.age=21;
        per2=per; //地址改变了
        System.out.println(per.say());
        System.out.println(per2.say());  
    }
}

7.封装(简单的封装)

class Person{
    private String name; //私有的
    private int age; //私有的
    public void setName(String n){
        name=n;
    }
    public void setAge(int a){
        age=a;
    }
    public String say(){
        return "姓名:"+name+", 年龄:"+age;
    }
}
public class Dy {
    public static void main(String[] args) {
        Person p=new Person();
        p.setName("Allen");
        p.setAge(22);
        System.out.println(p.say());
    }
}
在java开发中,属性设置为private,要想访问私有属性,必须声明seter、getter方法
以name属性为例,setter方法:setName(); getter方法:getName()
还有getlnfo()方法,返回所有变量的值

 

posted @ 2017-12-04 18:21  凯迪威  阅读(128)  评论(0编辑  收藏  举报