• Java自学课程笔记2


    2021年1月24日23点20分
    JAVA自学课程笔记2:
    
        代码执行过程中的内存管理:
            1.heap(堆区)
                由A aa = new A();所new出来的东西
            2.stack(栈区)
                代码的局部变量
            3.data segment(数据区)
                存放静态变量、字符串常量
            4.code segment(代码区)
                存放代码
    
            堆区存放的类(class)A aa1所指向其栈区存放的两个整型变量a、b
            (class A{int a;int b;}),若也让类A的aa2赋值以aa1,则aa2指向aa1其栈区的两个整型变量a、b。改变aa1的栈区变量,相当于改变aa2的栈区变量。
        
        类的访问控制符:
            在一个类的内部,所有的成员是可以互相访问,访问控制符是透明的;访问控制符是针对外部访问而言的。
            外部访问包括两种方式:
                通过类名访问内部的成员
                通过类对象名访问内部成员。
            1.默认(无任何修饰符,即default)。
                允许外部直接访问。
            2.protect
                在不同包中不允许互相访问。
            3.private
                不可以通过外部访问方式访问内部private成员。
                若定义一private变量a,则可以通过在a所在的类中构造一个public方法(public void set(int j){a=j;})来在外部改变变量a的值。
            4.public
                可以通过外部访问方式访问内部public成员。
    
        构造函数:
            构造函数在生成(new)一个新类时,该类中的构造函数会被调用。
                class A
                {
                    public A(){
                        System.out.println("无参构造函数调用");
                    }
                    public A(int a,int b){
                        System.out.println("有参构造函数调用");
                    }
                }
    
                class Test
                {
                    public static void main(String[] args) 
                    {
                        A aa1 = new A(1,2);
                        A aa2 = new A();
                    }
                }
                运行结果:
                    有参构造函数调用
                    无参构造函数调用
            构造函数是无返回值的,不需要void来定义。
            构造函数的名称应与其所属的类相同。
            如果不写构造函数,默认生产一个无参的构造函数(如果已写一个有参构造函数,用无参数外部调用,会报错)。
    
        函数的重载:
            功能相似的多个函数,可以在类型,形参个数,访问控制符不同的情况下,使用相同的函数名。(不违反查找冲突的情况下)
                class A{
                    public int f(int a, int b){
                    return (a + b);
                    }
                }
    
                class B extends A{
                    public int f(double a, int b, int c){
                    return (int)(a + b + c);
                    }
                }
    
                public class Test1{
                    public static void main(String[] args){
                    B bb = new B();
                    System.out.println(bb.f(1.7, 2, 3));
                    }
                }
                //输出结果:6
    
        在类中定义一变量,该变量为此类的属性。在定义后不附值,外部引用时相当于已初始化(值可以为:0,0L,0.0F,0.0D,u0000(空),False,Null),因为其看作为类的属性。而若是在所引用的类中定义一变量不附值,则看作非初始化局部变量报错。(属性不初始化是零值,局部变量不初始化是垃圾值。)
    
        this指针:
            this == 当前对象
            当创造于同一个类A上的两个不同对象aa1和aa2时,原先基础的类定义中的public整型i不被共用,但存在一非static方法public void show()(能打印出i)被aa1和aa2共用,show方法通过隐含的this指针知道目前正在调用该方法的对象。
            定义时等同于:
                public void show(){
                    System.out.printf("i = %d
    ",i);
                }
    
                ==
                
                public void show(A * this){
                    System.out.printf("i = %d
    ",(*this).i);
                }
            调用时等同于:
                aa1.show();
    
                ==
    
                aa1.show(aa1);
            若在一个类A中存在一个公共整型变量i,同时在该类的构造函数中也定义了一个形参i。当想要把构造函数中的i发送到公共变量i中时,可以使用this指针表示当前正在调用的对象aa1,this.i相当于对象aa1中的公共整型变量i。
                class A{
                    public int i = 99;
    
                    public A(int i){
                        this.i = i;    //this代表目前正在创建的对象
                        System.out.printf("%d
    ",i);
                    }
    
                    public void show(){
                        System.out.printf("%d
    ",this.i);
                    }
                }
            通过A aa = new A(2);和aa.show();语句得到输出结果:
                2
                2
  • 相关阅读:
    切换svn用户
    表session查询
    http请求响应头信息
    map遍历的四种方法
    java i/o读写
    excel导出
    平安医保权限管理关系
    json发送hppt请求
    weblogic配置路径
    《神经网络和深度学习》系列文章十五:反向传播算法
  • 原文地址:https://www.cnblogs.com/yinjx/p/14647855.html
Copyright © 2020-2023  润新知