Java基础,你面试可能会问到的各类问题

本文介绍了Java中的八种基本数据类型及其包装类,比较了`sleep`与`wait`的区别,讲述了Java流的分类,解析了反射机制,讨论了String的特性,讲解了线程实现方式、多线程概念、List集合特点、异常分类,以及this和super在构造方法中的作用。
摘要由CSDN通过智能技术生成

Java

八种基本数据类型定义相应的包装类:

基本数据类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

命名规范

1、项目名全部小写.
2、包名全部小写.
3、类名首字母大写,多个单词情况下使用驼峰命名规则.
4、变量名,方法名首字母小写,如果名称由多个单词组成,使用驼峰命名规则.
5、常量名全部大写.
6、所有命名规则必须遵循以下规则 :

  • 名称只能由字母、数字、下划线、$符号组成.
  • 不能以数字开头.
  • 名称不能使用Java中的关键字.
  • 尽量不使用中文及拼音命名.

sleep与wait区别

对于sleep()方法,我们首先要知道该方法是属于Thread 类中的。而wait()方法,则是属于Object 类中的。
sleep()方法导致了程序暂停执行指定的时间,让出cpu 该其他线程,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。
在调用sleep()方法的过程中,线程不会释放对象锁。
而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。

Java流的分类

按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)

按数据流的流向不同分为:输入流,输出流

按流的角色的不同分为:节点流,处理流

什么是反射机制

在Java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为Java 语言的反射机制

String的特性:

  1. String类代表字符串
  2. String是个final类,是个不可变的字符序列;
  3. 字符串是常量,使用“”来表示,他们的值创建了之后是不能被改变的
  4. String对象的字符内容是存储在一个**字符数组value[]**中的;

包装(Wrapper)类

    1. 八种基本数据类型定义相应的包装类:

      | 基本数据类型 | 包装类 |
      | ------------ | --------- |
      | byte | Byte |
      | short | Short |
      | int | Integer |
      | long | Long |
      | float | Float |
      | double | Double |
      | boolean | Boolean |
      | char | Character |

    String、StringBuffer、StringBuilder区别

  • String:不可变字符串序列;使用char[]存储

    • StringBuffer:可变的字符串序列;线程安全的效率偏低;使用char[]存储
  • StringBuilder:可变的字符串序列;线程不安全的效率高;使用char[]存储

两种线程实现方式

Java 虚拟机的主线程入口是main 方法,用户可以自己创建线程,创建方式有两种:

  • 继承Thread 类
  • 实现Runnable 接口(推荐使用Runnable 接口)

多线程的基本概念

线程指进程中的一个执行场景,也就是执行流程,那么进程和线程有什么区别呢?

  • 每个进程是一个应用程序,都有独立的内存空间。
  • 同一个进程中的线程共享其进程中的内存和资源。
  • 共享的内存是堆内存和方法区内存,栈内存不共享,每个线程有自己的。

List 集合的主要特点:有序、可重复、有索引

集合分为两大类:

一类是单个方式存储元素:

单个方式存储元素,这一类集合中超级父接口:java.util.Collection

一类是以键值对儿的方式存储元素:

以键值对的方式存储元素,这一类集合中超级父接口:java.util.Map

异常的分类

异常(Exception)位于 java.lang 包下,它是一种顶级接口,继承于 Throwable 类。

在程序在编译和运行阶段经常会产生异常或者错误,而认识异常之前,首先认识其父类 Throwable 类。
8.1.1 什么是Throwable

Throwable 类是Java语言中所有 错误 (errors) 和 异常(exceptions) 的父类。只有继承于Throwable的类或其子类才能被抛出。还有一种方式是带有 @throw 注解的类也可以抛出。异常的捕获

try、catch 和 finally

自动装箱和自动拆箱机制:

自动将基础类型转换为对象

自动将对象转换为基础类型

JDK5.0之前:

装箱:Integer i1 = new Integer(100);

拆箱:int i2 = i1.intValue();

JDK5.0之后:

装箱:Integer i3 = 100;

拆箱:Int i4 = i3;

“==” 和 equals :

“==” 比较的是内存地址,equals 在包装类中重写了,比较的是基本数据类型的值。

JDK常用包

java.lang,此包Java 语言标准包,使用此包中的内容无需import 引入

java.sql,提供了JDBC 接口类

java.util,提供了常用工具类j

ava.io,提供了各种输入输出流

this和super

this

this是一个变量,是一个引用。this保存当前对象的内存地址,指向自身。this储存在堆内存当中的对象内部。

this只能使用在实例方法中,谁调用这个方法,this就是谁。

使实例方法中的局部变量有意义化,把变量指向对象,可读性高。

构造方法也可使用this指向对象

this(实参) 只能出现在构造方法的第一行,例如:



super

严格来说,super 其实并不是一个引用,它只是一个关键字,super 代表了当前对象中从父类继承过来的那部分特征。this 指向一个独立的对象,super 并不是指向某个“独立”的对象,假设张大明是父亲,张小明是儿子,有这样一句话:大家都说张小明的眼睛、鼻子和父亲的很像。那么也就是说儿子继承了父亲的眼睛和鼻子特征,那么眼睛和鼻子肯定最终还是长在儿子的身上。假设this指向张小明,那么super 就代表张小明身上的眼睛和鼻子。换句话说super 其实是this 的一部分。如下图所示:张大明和张小明其实是两个独立的对象,两个对象内存方面没有联系,super 只是代表张小明对象身上的眼睛和鼻子,因为这个是从父类中继承过来的,在内存方面使用了super 关键字进行了标记,对于下图来说“this.眼睛”和“super.眼睛”都是访问的同一块内存空间。

语法:
    super. super()

用super. 访问父类特征时,若子类也有相同特征,super. 不能省,省了会访问子类的该特征
    super() 作用:调用父类的构造方法,代码复用

super() 必须在构造方法第一行,若第一行没有手动写super,系统会默认写上super()
    super() 和this() 只能存在一个,this() 调用本类中的其他方法

在java中调用子类构造方法时父类的构造方法一定会执行

this和super比较

父类的构造方法,代码复用

super() 必须在构造方法第一行,若第一行没有手动写super,系统会默认写上super()
    super() 和this() 只能存在一个,this() 调用本类中的其他方法

在java中调用子类构造方法时父类的构造方法一定会执行

this和super比较

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值