• 9.25 day 2


    1.

    简述方法重写与方法重载的意义与区别:

    方法重写:

    1.参数列表必须完全与被重写方法相同

    //参数列表(分为四种):

    (1)无参无返回值方法;

    (2)有参无返回值方法;

    (3)无参有返回值方法;

    (4)有参有返回值方法;

    2.返回类类型必须完全与被重写方法的返回类型相同

    3.方法名相同

    访问权限不能比父类被重写发方法的访问权限更低,此为一大

    父类的成员方法只能被它的子类重写

    声明为final的不能被重写

    声明为static的方法不能被重写

    子类和父类在同一包中,那么子类可以重写父类的所有方法,除了声明为private和final的方法

    子类和父类不在同一个包中,那么子类只能够重写父类声明为public和protected的非final方法

    重写的方法能够抛出任何非强制性异常,无论重写

    强制性异常:所谓强制性异常就是在编写程序的过程中必需在抛出异常的部分try catch 或者向上throws异常。

    在这里插入图片描述

    ** 非强制性异常**:所谓非强制性异常就和上面相反了

    在这里插入图片描述

    构造方法不能被重写

    如果不能继承一个方法,则不能重写

    方法重载:

    被重载的方法必须改变参数列表(参数个数或类型或顺序不一样)

    被重载的方法可以改变返回类型

    可以改变访问修饰符

    可以声明新的或更广的检查异常

    无法以返回值类型作为重载函数的区分标准

    2.

    了解一下

    hashCode方法本质就是一个哈希函数,这是Object类的作者说明的。Object类的作者在注释的最后一段的括号中写道:将对象的地址值映射为integer类型的哈希值。但hashCode()并不完全可靠的,有时候不同的对象他们生成的hashcode也会一样,因此hashCode()只能说是大部分时候可靠。

    通常我们比较两个对象是否相同,我们会重写equals(),因为原版的equal效率比较低下,利用hashcode 生成hash值进行比较,这样通过equal比较的两个hashcode值肯定相同,如果这个hashcode相同了,再对比他们的quals()

    equals()相等的两个对象hashCode()一定相等。

    hashCode()相等的两个对象equal()不一定相等

    3.

    public class ZeroTest {
        public static void main(String[] args) {
         try{
           int i = 100 / 0;
           System.out.print(i);
          }catch(Exception e){
           System.out.print(1);
           throw new RuntimeException();
          }finally{
           System.out.print(2);
          }
          System.out.print(3);
         }
     }

    分析:

    catch捕捉之后,1

    抛出异常之后程序终止,finally执行

    throw抛出异常之后程序就不继续往下执行了。

    4.

    public class Arraytest{
        int a[] = new int[6];
        public static void main ( String arg[] ) {
            System.out.println ( a[0] );
        }
    }

    在static方法中不能访问静态变量a,需要将a声明为static

    5.

    我们还要来补充一个运算符的补充知识点:

    1、>>:右移运算符,num >> 1,相当于num除以2。

    按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。符号位不变。

    如:

    -1在32位二进制中表示为:

    11111111 11111111 11111111 11111111

    -1>>1:按位右移,符号位不变,仍旧得到11111111 11111111 11111111 11111111

    因此值仍为-1

    2、>>>:二进制右移补零操作符,左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充

    如value >>> num中,num指定要移位值value 移动的位数。

    img

    扩展资料

    “>>”和“>>>”等移位运算符的运算规则:

    1、无符号右移,忽略符号位,空位都以0补齐。

    value >>>a,a是要移位值value 移动的位数。

    无符号右移的规则只记住一点:忽略了符号位扩展,0补最高位 无符号右移运算符>>> 只是对32位和64位的值有意义。

    2、右移位运算符>>,若操作的值为正,则在高位插入0;若值为负,则在高位插入1。

    右移补零操作符>>>,无论正负,都在高位插入0。

    没有<<<是因为不需要

    6.

    interface中的方法默认为public abstract 的 ,变量默认为public static final 
        //不能有private出现

    7.

    Float正确赋值方式:

    Float a = new Float(1.0)

    Float f = 1.0f 若不加f会被识别成double型,double无法向float吟诗转换

    8.

    标准输入指键盘输入;标准输出指输出到屏幕上。

    记住System,out,println()就不会错

    一般用 System,in创建inputStream对象,用Symstem,out创建outputStream对象

    9.

    方法头指:修饰符+返回类型 +方法名(形参列表)

    方法名相同,参数类型相同

    子类返回类型小于等于父类方法返回类型, 子类抛出异常小于等于父类方法抛出异常, 子类访问权限大于等于父类方法访问权限。

    所以说返回类型可以不同的

    image-20230926171823728

    10.

    image-20230926172946253

    intValue()是把Integer对象类型变成int的基础数据类型

    parseInt()是把String变成int的基础数据类型

    ValueOf()是把String转化为Integer对象类型

    11.

    执行结果是?

    class BaseClass {
        public BaseClass() {}
     
        {
            System.out.println("I’m BaseClass class");
        }
     
         static {
             System.out.println("static BaseClass");
         }
     }
     
     public class Base extends BaseClass {
         public Base() {}
     
         {
             System.out.println("I’m Base class");
         }
     
         static {
             System.out.println("static Base");
         }
     
         public static void main(String[] args) {
             new Base();
         }
     }

     
    public class Father {  
        static {
            System.out.println("父类静态代码块");    }
    ​
        {
            System.out.println("父类非静态代码块");    }
         public Father(){
            System.out.println("父类构造函数");    }   }
    public class Son extends Father{ 
        static {
            System.out.println("子类静态代码块");    }
    ​
        {
            System.out.println("子类非静态代码块");    } 
        public Son(){
            System.out.println("子类构造函数");    }
        public static void main(String[] args) {
            Son son = new Son();    }
    }
    ​
    /*结果为:   父类静态代码块
        子类静态代码块
        父类非静态代码块
        父类构造函数
        子类非静态代码块
        子类构造函数 
    ​
    ​

    父类静态代码块->子态静态代码块->父类非静态代码块->父类构造函数->子类非静态代码块->子类构造函数

    12.

    输出结果?

    public class EqualsMethod
    {
        public static void main(String[] args)
        {
            Integer n1 = new Integer(47);
            Integer n2 = new Integer(47);
            System.out.print(n1 == n2);
            System.out.print(",");
            System.out.println(n1 != n2);
        }
    }
    ​

    使用Integer a = 1;或Integer a = Integer.valueOf(1); 在值介于-128至127直接时,作为基本类型。

    使用Integer a = new Integer(1); 时,无论值是多少,都作为对象。

    13.

    public class Test {
        private static int j = 0;
     
        private static Boolean methodB(int k) {
            j += k;
            return true;
        }
     
        public static void methodA(int i) {
            boolean b;
            b = i < 10 | methodB(4);
            b = i < 10 || methodB(8);
     
        }
     
        public static void main(String args[]) {
            methodA(0);
            System.out.println(j);
        }
    }

    这道题主要考的是"|"与"||"的区别

    用法:condition 1 | condition 2、condition 1 || condition 2

    "|"是按位或:先判断条件1,不管条件1是否可以决定结果(这里决定结果为true),都会执行条件2

    "||"是逻辑或:先判断条件1,如果条件1可以决定结果(这里决定结果为true),那么就不会执行条件2

    14.

    public static void main(String[] args) {
        Object o1 = true ? new Integer(1) : new Double(2.0);
        Object o2;
        if (true) {
        o2 = new Integer(1);
        } else {
            o2 = new Double(2.0);
        }
        System.out.print(o1);
        System.out.print(" ");         
        System.out.print(o2);
    }
    ​

    三元操作符如果遇到可以转换为数字的类型,会做自动类型提升。

    1.0 1

    R:

    1.程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的信号只是其,每个线程都需要一个独立的程序计数器

    2.方法区是各个线程共享的内存区域,它用于存储已经被虚拟机加载的常量、即时编译器编译后的代码、静态变量等数据

    3.java虚拟机栈描述的是java方法执行的内存哦行,每个方法被执行的时候都会创建一个栈帧,用于存储 局部变量表、动态链接等信息

    4.java堆:对于绝大多数应用来说,这块区域是JVM所管理的内存中最大的一块

    5.JDBC:Java Database Connectivity,是标准的javaAPI,是一套客户端程序与数据库交互的规范

  • 相关阅读:
    gitLab server version 13.12.1 is not supported
    iSlide插件2024免费版(包含52 个PPT设计辅助功能,9 大在线资源库,以及超 50 万 专业)
    蚁群优化算法解决TSP问题(Matlab代码实现)
    使用 Python 发送带附件的电子邮件教程
    BEVFormer治好了我的精神内耗
    Labview 2020 版 生成报表的程序,打包时, 运行 exe,出现错误
    char与varchar详解
    计算机网络 八股
    Delft3D水动力与泥沙运动模拟实践技术应用
    java计算机毕业设计社区卫生预约挂号系统源码+系统+mysql数据库+lw文档+部署
  • 原文地址:https://blog.csdn.net/m0_74107946/article/details/133319024