• 引用


    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()方法,返回所有变量的值

  • 相关阅读:
    github上fork的项目,如何同步原作者更新的内容?
    设计模式-简单工厂模式详解
    设计模式-建造者模式详解
    设计模式-原型模式详解
    设计模式-单例模式详解
    SqlServer断开所有连接
    Winform重写键盘按键事件
    从拖拉控件编程到面向设计编程(一)
    Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro权限
    java 微信自定义菜单 java微信接口开发 公众平台 SSM redis shiro 多数据源
  • 原文地址:https://www.cnblogs.com/lxy151/p/7978423.html
Copyright © 2020-2023  润新知