java基础篇面试题

Java有哪些数据类型

  • 基本数据类型
  • 整数类型(byte,short,int,long)
  • 浮点类型(float,double)
    • 字符型(char)
    • 布尔型(boolean)
  • 引用数据类型 4个字节
    • 类(class)
    • 接口(interface)
    • 数组([])
  • Java基本数据类型图

在这里插入图片描述

  1. 运算转换
    • Byte int float short long char OP(运算)double->(结果)double;
    • Byte char int short long OP float->float;
    • Byte char short OP int ->int;
    • Byte short char一旦参与运算就一定会转化为int

final关键字

- final有什么用?
用于修饰类、属性和方法;
  - 被final修饰的类不可以被继承,不能和abstract一起用,因为abstract是用来修饰抽象类,抽象类用于被子类继承
   - 被final修饰的方法不可以被重写,但是可以被重载,子类可以引用父类final修饰的方法
  - 被final修饰的变量不可以被改变,如果final修饰的是成员变量,初始化之后,该成员变量不可变,如果final修饰的是引用变量,初始化后,引用变量不可变,但是变量里面的内容可以改变,因为final修饰的内容是地址不可变
- final finally finalize区别
  - final可以修饰类、变量、方法
  - 被final修饰的类不可以被继承,不能和abstract一起用,因为abstract是用来修饰抽象类,抽象类用于被子类继承
  - 被final修饰的方法不可以被重写,但是可以被重载,子类可以引用父类final修饰的方法
  - 被final修饰的变量不可以被改变,如果final修饰的是成员变量,初始化之后,该成员变量不可变,如果final修饰的是引用变量,初始化后,引用变量不可变,但是变量里面的内容可以改变,因为final修饰的内容是地址不可变
  - finally一般作用在try-catch代码块中,不管程序是否会出现异常,final代码块一定会被执行,一般用来存放一些关闭资源的代码。
  - finalize是Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调用System.gc() 方法的时候,由垃圾回收器调用finalize(),回收垃圾,一个对象是否可回收的最后判断。

this和super

  1. this关键字
    1. 普通的直接引用,调用自身的方法和成员变量
    2. 形参和成员变量同名时,用于区分形参 this.形参
    3. 引用本类的构造方法 this()
  2. super关键字
    1. 引用父类的方法和变量
    2. 和子类的方法重名时,用super区分
    3. 引用父类的构造方法 super()
  3. 区别和联系
    1. this()和super()不能同时出现,会编译异常。因为this()调用其他构造函数时,其他构造函数中肯定会有super(),因为子类构造函数中会默认有一个super();
      public class Son extends Parent{
      public Son(){
      System.out.println(1111111111);
      }
      public Son(int x){
      this();
      super(); //此处会出现编译异常
      System.out.println(x);
      }
      public static void main(String[] args) {
      new Son(2);
      }
      }

    2. this()和super()都必须写在构造方法的第一行

    3. this和super都不能出现在静态变量,静态方法,静态代码块中

    4. this是指向本对象的一个指针,而super是一个关键字

static关键字

 			 1. 可以用来修饰内部类,用   外部类类名.内部类类名 创建内部类对象
 			 2. 可以修饰方法,通过 类名.方法名调用 ,存放在内存的方法区
 			 3. 可以修饰变量,通过 类名.变量名 调用,存放在内部方法区的静态数据区
 			 4. 可以用来修饰代码块 但是代码块中不能出现非静态代码
 			 5.  static修饰的变量存放在方法区,可以被任何对象使用,不会随着任何一个对象的消失而消失。
 			 6. static优先于对象存在,在类加载的时候就存在了
 			 7. 成员变量和静态变量的区别
 			  	   
	 1. 生命周期不同
	       1. 成员变量随着对象的创建而创建,随着对象的消亡而消亡
	       2. 静态变量随着类的创建而创建,随着类的消亡而消亡
	  2. 调用方式不同
	
		 1. 成员变量只能通过对象调用
		 2. 静态变量可以通过对象调用,也可以通过类名的方式调用
		3. 别名不同
			1. 成员变量也叫实例变量
			2. 静态变量也叫类变量
		 4. 数据的存储位置不同 
			 1. 成员变量存在堆中的对象中
			 2. 静态变量存在方法区的静态数据区
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值