Java
八种基本数据类型定义相应的包装类:
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
命名规范
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的特性:
- String类代表字符串;
- String是个final类,是个不可变的字符序列;
- 字符串是常量,使用“”来表示,他们的值创建了之后是不能被改变的;
- String对象的字符内容是存储在一个**字符数组value[]**中的;
包装(Wrapper)类
-
-
八种基本数据类型定义相应的包装类:
| 基本数据类型 | 包装类 |
| ------------ | --------- |
| 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比较
标签:Java,构造方法,对象,面试,线程,问到,java,super
From: https://blog.csdn.net/weixin_51627264/article/details/136666143