• JavaSE基础知识新理解


    //如果等号右边是两个常量在相加,程序内部会优化为一个常量再赋值
    byte num04 = 10 + 20;// JVM中的一种优化(全部是常量才会触发) 相当于byte num04 = 30;
    //byte num05 = 10 + num01 + 20;// 错误: 不兼容的类型: 从int转换到byte可能会有损失

    ——————————————————————————————————————————————————————————

    int score =100;//作用域是main方法,以下代码块都不得定义重复变量
    {
    //int score =120;// 已在方法 main(String[])中定义了变量 score 再定义就报错
    }

    ——————————————————————————————————————————————————————————

    4.复合赋值运算符其中隐含了一个强制类型转换
    int num01 = 3;byte num02 = 5;
    num02+=num01;//int 等价于 num02 =num02 + num01;
    System.out.println(num02);
    //num02 =num02 + num01;报错
    System.out.println(num02);//不兼容的类型:从int转换到byte可能会有损失

    ——————————————————————————————————————————————————————————

    数组的三种创建方式(int 型数组为例)
    一、=new int[4];------动态初始化
    二、=new int[]{1,2,3,4};------静态初始化
    三、={1,2,3,4};------静态初始化

    ——————————————————————————————————————————————————————————

    变量只有被初始化才能够投入使用,只不过局部变量需要手动初始化(显式初始化),成员变量或数组内的元素都有自己的默认初始化机制(隐式初始化)

    ——————————————————————————————————————————————————————————

    当方法的返回值类型为void的时候,这种方法只能单独调用,不能进行打印调用或者是赋值调用。
    如:int a = add(3,4); System.out.print( add(3,4));
    public void add(int a,int b){
    //方法体
    }

    ——————————————————————————————————————————————————————————

    int c = 5;
    c = c-- + c++ //结果为9
    9 = 5 + 4

    ——————————————————————————————————————————————————————————

    JavaBean中重载构造器必须添加一个空参构造器,为了子类构造器可以隐式调用(众多子类构造器中必有一个加载super(),虽然我们无法直观的看见;这是子类继承父类的实现方式)

    ——————————————————————————————————————————————————————————

    return关键字可以终止for循环吗?为什么?
    可以
    ​ 原因:1.终止当前正在执行的方法,for循环一般定义在方法内
    2.可以返回方法的返回值,return语句声明在for循环结构内可以返回for循环结构之外的数据值,当方法声明格式为无返回值时,也可以使用return关键字,此时return后不能跟具体的返回值。当程序加载到return语句时,不管return语句是否在for循环结构中,都会结束当前正在执行的方法,即结束方法内的for循环语句。
    ​ 建议:return结束for循环比较强硬,建议使用跳转语句 break或continue

    ——————————————————————————————————————————————————————————

    数组的长度可以改变吗?
    数组的长度可以改变:
    ​ 情况一:在程序的编译期间,数组的长度可以更改
    ​ 情况二:在程序的运行期间,数组的长度不可以更改。具有定长特性,一旦在内存中开辟空间,数组的长度就可以确定了。

    ——————————————————————————————————————————————————————————

    this关键字遵循就近原则,它可以调用父类的属性,如果在子类中未找到目标属性,才会到父类中去找

    ——————————————————————————————————————————————————————————

    String中的equals()方法重写了Object中的equals()方法
    1. 若当前对象和比较的对象是同一个对象,即return true。也就是Object中的equals方法。

     2. 2.1若当前传入的对象是String类型,则比较两个字符串的长度,即value.length的长度。
          ①若长度不相同,则return false
          ②若长度相同,则按照数组value中的每一位进行比较,不同,则返回false。若每一位都相同,则返回true。
        2.2若当前传入的对象不是String类型,则直接返回false
    

    ——————————————————————————————————————————————————————————

    get、set方法体内可以定义数据访问规范,从而防止数据被随意篡改访问
    例如:public void setAge(int age){
    if(age<=0){
    this.age = 0;
    }else{
    this.age = age;
    }
    }

    ——————————————————————————————————————————————————————————

    public class Man{
    private String name;//存在堆中
    //两个name为什么没有提示重复声明???
    public void setName(String name){//存在栈中 两个name不在同一个内存区域,无法互相影响
    this.name = name;
    }
    }

    ——————————————————————————————————————————————————————————

    Java集合不能存放基本数据类型
    Java集合不能存放基本数据类型,只能存放对象的引用
    可以通过包装类,把基本数据类型转化为对象类型,存放引用

    ——————————————————————————————————————————————————————————

    String str1 = "abc";//"abc"对象被创建出来,而且该对象只会创建一次,此时str1与str2可以共享同一个"abc"对象
    String str2 = "abc";//存放在字符串常量池中
    String str3 = new String("abc");//存放在堆内存中
    String str4 = new String("abc");//创建新的对象

    ——————————————————————————————————————————————————————————

    类的构造器不仅可以初始化类中属性,也可以通过操作类变量来统计对象数量

    ——————————————————————————————————————————————————————————

    接口中的静态方法可以通过 接口.方法名()调用

    ——————————————————————————————————————————————————————————

    接口中可以定义的内容
    JDK1.7
    常量
    抽象方法
    JDK1.8
    默认方法
    静态方法
    JDK1.9
    私有方法

    ——————————————————————————————————————————————————————————

    抽象类可以定义成员变量、成员方法、抽象方法
    接口不可以定义成员变量

    ——————————————————————————————————————————————————————————

    接口中,有多个默认方法时,实现类都可以继承使用,如果【默认方法】有重名的,必须重写一次.************【接口冲突】
    关于父类和接口中【抽象方法】重名问题,由于抽象方法没有方法体,没有实际意义,对程序没有影响,子类重写一次即可
    【静态方法】出现重名,由于只能由类名/接口名直接调用,子类无法调用,对子类无任何影响

    当一个类,即继承了一个父类,又同时实现了多个接口,父类中的【成员方法】与接口中的【默认方法】重名时. 子类就近选择执行父类的成员方法***********【类优先原则】

    ——————————————————————————————————————————————————————————

    子类调用从父类继承来的属性(自己的属性) 通过this调用
    调用父类属性 通过super

    ——————————————————————————————————————————————————————————

    将属性设置为静态,可方便操作类间通信
    当集合做属性时,如果不new 极有可能空指针异常,因为在创建对象的时候,构造器会初始化集合为null
    也可以在构造器中创建集合对象

  • 相关阅读:
    【Foreign】数数 [打表][DP]
    【Foreign】猜测 [费用流]
    【Foreign】最大割 [线性基]
    【Foreign】开锁 [概率DP]
    【Foreign】染色 [LCT][线段树]
    【Foreign】阅读 [线段树][DP]
    【Foreign】字符串匹配 [KMP]
    【Foreign】冒泡排序 [暴力]
    【BZOJ1976】能量魔方 [最小割]
    【Foreign】树 [prufer编码][DP]
  • 原文地址:https://www.cnblogs.com/mitoris/p/13956389.html
Copyright © 2020-2023  润新知