java基础复习

一.java基础

1.面向对象的特点

1.继承:让某个对象拥有其他对象的属性,其实就是让子类拥有父类的行为和特征
2.封装:隐藏对象的属性和实现细节,只对外暴露方法名,通过方法名进行访问给对象
3.多态:对于同一个行为,不同的子类有不同的表现形式。
多态的三要素:继承重写,父类引用指向子类对象

2.jdk和jre的区别

区别的详情:https://www.php.cn/java/guide/449867.html
1.jre(java runtime environment) java文件的运行环境,实际就是java运行环境的集合包括:jvm java的核心类库,支持文件等等,
2.jdk:java的开发工具包,包括开发环境(编译器javac工具包将java文件编译成class文件)和运行环境(jvm去解析class文件,并运行)

3.如何编译和运行java文件

1.安装jdk环境
2.在命令窗口,输入javac random.java(random为文件名)让编译器javac变异成class文件(这个时候会java文件所在的文件夹中生成一个class文件)
在这里插入图片描述
3.在命令窗口,输入 java random 即可运行命令

4.java中常用的关键字有哪些(可做补充)

1.访问修饰符:public private protect default
2.非访问修饰符:synchronized final static abstract

5.访问修饰符的作用范围

这里是引用
注意,protected不能修饰类

6.java标识符的命名规则

1.标识符由字母(包括大小写),数字,下划线和美元符号($)组成
2.标识符不能以数字开头
3.标识符不能以关键字命名
4.要区分大小写

7.java方法,类和常量命名规范

类名:驼峰命名法 类的首字母大写,后面单词的首字母也大写
常量:全部大写,多个单词之间使用下划线连接
方法名:第一个单词首字母小写,后面的单词首字母大写

8.常量和变量的区别

1.在命名规则上,常量大写,变量小写
2.常量只能赋值一次,而变量可以赋值多次
3.在程序运行中,常量是不变的,而变量是变化的

9.如何定义一个常量以及常量的类型

1.如何定义:使用final修饰
2.类型:在这里插入图片描述

10.二进制,八进制,十六进制,十进制之间的转化:详情:详情

11.equals和==的区别

1.equals:基本类型;值是否相等
引用类型;实际上比较的还是两个引用是否指向同一个对象,String 和Integer重写了equals方法,所以最终比较的还是 两个值是否相等
2.== :基本类型;值是否相等
引用类型:引用是否指向同一个对象

12.this和super的区别

1.this代表对象本身:可以访问对象本身的构造方法,成员变量,成员方法
2.super代表该对象的父类,可以访问父类的构造方法,成员变量,成员方法

13.关于数据和对象之间的转化

这里是引用

14.关于数据之间的运算细节

1.short i=1; i+=1有错吗?
所有小于或等于int最大值的整形都默认为int类型,int转化为short,是高精度想低精度转型,需要强转
2.float同理:在这里插入图片描述

3.0.2+0.3==0.5?:
不等于,因为浮点运算会存在精度丢失等于0.5000…
4.i++和++i的区别:i++是先赋值后加,++i是先加后赋值

15.while和do while的区别

while先做判断在决定是否执行循环体
dowhile 先执行一次循环体,在做判断

16如何跳处java中的循环

1.break:结束循环体
break跳处外层循环
在这里插入图片描述
2.continue:结束本次循环,开始下一次循环
3.return:直接结束该方法体,不管有多少层循环

17.&和&&,||和|的区别

&&:只要第一个条件不成立,就不会在去判断第二个
&:两个条件都必须判断
||和|同理

18运算符的详情:详情

19.数组中有没有length方法?String呢?

这里是引用

20.怎么理解值传递和引用传递(以及形参实参的区别):详情

以及

21.final,finally,finalize

这里是引用

22.变量的分类和区别

这里是引用

22.java的单继承和实现多个接口

原因:不允许类多重继承的主要原因是,如果A同时继承B和C,而B和C同时有一个D方法,A如何决定该继承那一个呢?
但接口不存在这样的问题,接口全都是抽象方法继承谁都无所谓,所以接口可以继承多个接口。

23.重载和重写的区别

重载:在同一个类中,方法名一样,参数列表必须不一样,返回值类型可以不一样,
重写:子类和父类的关系,方法名,参数列表必须一样,返回值类型可以不一样,但是必须是父类返回值的派生类,修饰权限必须是大于被重写的方法

24.构造器、main、私有方法、静态方法能被重载和重写吗?

1.构造器
不能重写,因为子类和父类的类名不一样,而构造器和类名一样,所以构造器不一样
能重载

2.main能重载,不能重写

3.私有方法:不能重写,应为prvaite默认为fianl是不能被继承的
但是能够被重载

4.静态方法不能重写,是可以重载的

25.静态方法可以被继承吗?

静态的方法可以被继承,但是不能重写。如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写。
通俗的讲就是父类的方法和子类的方法是两个没有关系的方法,具体调用哪一个方法是看是哪个对象的引用;这种父子类方法不在存在多态的性质。

26.java异常有哪些分类以及编译和运行时的区别)

1.分类:throwable是Exception 和 Error 的顶级父类
error是指程序不能够处理的异常
Exception是程序可以处理的异常
在这里插入图片描述

27.java常见的异常

这里是引用

28.常见的运行时异常和编译时异常

这里是引用
在这里插入图片描述

29.避免空指针的方法

1.在使用equals是常量放在前面
2.在初始化对象的时候,给他一个默认值
3.在返回一个集合的时候,使用三元运算符进行判断,如果为空,返回一个新的list
4.使用断言判断在这里插入图片描述

30.throw和throws的区别

疑问:throw后还会抛出异常吗

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

动力节点高频面试题:详情

31.try-catch-finally中那部分可以省略

都可以省略,但是不能同时省略

32.java可以一次catch多个异常吗?

这里是引用

33.int和Integer有什么区别:延伸

四点
在这里插入图片描述

34.自动拆箱和装箱

这里是引用

35.如何理解java中的强制类型转化

这里是引用

36.如何理解java中的多态机制

这里是引用

37.如何获取用户的输入

这里是引用

38.Switch能否用在long上

这里是引用
String类型好像可以支持在这里插入图片描述

39.String常用的方法

1 length()字符串的长度
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

40.String的底层是如何实现的

这里是引用
在这里插入图片描述
在这里插入图片描述

41.String是可变的吗?

1.不可变,因为就在源码中声明了一个final类型的字符数组

42.String可以别继承吗?

String类是被final修饰的,所以不能被继承‘

43.String真的不可变吗?

String字符串是不可变的
但是String的应用是可以指向其他字符串的

44.字符串是如何进行反转的

这里是引用

45.字符串如何时限编码转换

这里是引用

46.String有没有长度限制?是多少?

String 的长度是有限制的。
编译期的限制:字符串的UTF8编码值的字节数不能超过65535,字符串的长度不能超过65534;
运行时限制:字符串的长度不能超过2^31-1,占用的内存数不能超过虚拟机能够提供的最大值。

47.String和byte[]之间如何转化?

这里是引用

48.字符串分割有哪些方式

1.Tonkenizer
在这里插入图片描述
2.split
在这里插入图片描述
在这里插入图片描述
3.subString
在这里插入图片描述

49.字符串拼接+ 和concat的区别:详情

这里是引用

50.String,StringBuffer和StringBuilder的区别:详情

这里是引用

51.StringBuilder。StringBuffer默认容量大小?

这里是引用

*******十道关于main方法的面试题详情

52.java中的main方法有什么用?

1.main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,
2.必须是public static void 修饰的,接收字符串数组

53.main方法能同步吗?

main方法可以在Java中同步,synchronized修饰符允许用于main方法的声明中,这样就可以在Java中同步main方法了。

54.main方法为什么是静态的?

我的理解:
因为如果是非静态的 ,这样就可以重载,到时候就不知道调用那个了

55.怎么向main方法传递参数

这里是引用

56.不用main方法如何运行一个类?

不行,没有main方法不能运行一个类

57.java所有类的祖先类

Object

58.普通类和抽象类有什么区别?

这里是引用

59.静态内部类和普通内部类有什么区别?:详情

这里是引用

60.静态方法可以直接调用非静态方法吗?

静态方法可以直接调用同类中的静态成员:,但是不能直接调用非静态成员,如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。
非静态可以直接调用静态:在普通成员方法中,可以直接访问同类的静态变量和非静态变量。

61.内部内可以访问其外部类的成员吗?

内部类作为其外部类的一个成员,与其他成员一样,可以直接访问其外部类的数据和方法。

62.接口和抽象类有什么区别?详情

见详情

63.接口是否 可以继承接口

可以继承,并且可以多继承

64.接口的默认方法和静态方法是什么?

这里是引用
在这里插入图片描述

65.抽象类能否继承其他类

这里是引用

66.抽象类是否可以实现其他的接口?

在这里插入图片描述

67.如何判断一个对象是某类。接口的实例?

使用instancof 判断
在这里插入图片描述

68.Java如何生成随机数

第一种方法
在这里插入图片描述
第二种方法
在这里插入图片描述

69.什么是hash冲突

**哈希函数:**像一般的线性表、树等等,储存的位置都是随机的,所以在查找的的时候是通过挨个比较来查询,所以效率比较低 。而哈希函数是根据哈希表中的元素的关键值映射为哈希的储存位置,
**哈希冲突:**当两个不同的元素的关键值映射到同一个储存位置的时候

70,equals和hashcode的区别:详情

这里是引用
补充一点:如果重写equals方法的话,最好也重写一下hashcode的方法,以保证当equals相等时,能够返回相同的hashcode的值

71.为什么重写equals就要重写hashcode?:详情

这里是引用

72.动态代理(后续补充)

73.关于反射的高频面试题(11道):详情

74.字符串和数字之间的转化

数字转字符串:String.valueOf(i)
字符串转数字:Integer.parseInt(str)

二.集合容器

1.collection接口

1.1List接口
1.1.1三个实现类的异同

1.区别
ArrayList;底层数据结构为数组,线程不安全,优点是:查询效率高(有索引值)
LinkedList:底层数据结构为双向列表,线程不安全,优点是:频繁的插入、删除时效率高(有索引值)
Vector:线程安全的古老类,底层数据结构为数组、但效率低
2.共同点
都实现了List接口,都是有序,可重复的集合

1.1.2常用方法

增:add(obj)
改:add(index,obj)
查:get(index)
删:两种情况:
(1)remove(index)根据索引去做删除
(2)remove(obj)根据内容去做删除(只有对象格式的时候才是根据内容删除)
注意:凡是存入到list集合中元素都是对象的格式(int类型的数据会自动被装箱为Integer)
eg:
在这里插入图片描述

1.1.2iterator迭代器

遍历arrayslist的方式:
1.for循环
2.增加for循环
3.迭代器

关于迭代器的注意事项:
在这里插入图片描述
在这里插入图片描述

1.2.Set接口
1.2.1.HashSet:博客1 博客2

1.底层的数据结构:底层其实是一个hashMap,而hashMap的底层在jdk1.8之前使用“数组+链表”,1.8之后采用“数组+链表+红黑树”(当链表中阈值大于8时,就会变成红黑树)
在这里插入图片描述

1.2.1.LinkedHashSet:

底层数据结构: 数组+链表+红黑树(内部使用了列表来维持数据的有序性)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值