我的问题总结

这里写目录标题

主要讨论区别有题型: 1.1、6、8、13、14、15、21、22、23、26、29、30、34、36、37、40、41、42、43、46、47、49、52、54、59、62、70、77、78、79、80、81、89、103、107、108。
难题: 21、22、23、29、40、68、70、80、90.1、90.2
难题2:
1-21题:2、8、12、16、17.1
22-40题:23、27、29、33、37、40
41-60题:50、53、55、56、57
61-80题:65、66、67、68、70、71、74、76、77、78、80
81-100题:81、82、83、87、94、96、98
101-110题:101、102、107、108
拓展题:116

1.1、jdk和jre的区别

jdk是java的开发工具包,jre是java的运行环境

  • JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。
  • JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境
  • JVM:将编译生成的字节码文件根据对应的操作系统和硬件解析成对应的机器指令;不同的平台需要安装对应版本的JVM。
  • 总结: JDK 包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具。简单来说:如果你需要运行 java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序,就需要安装 JDK。

1、说一下JAVA的三种注释

// 单行注释 // 多行注释 /…*/ 文档注释

文档注释的作用 :主要是用来生成说明文件时用的

@author:作者。
@version:版本。
@docroot:表示产生文档的根路径。
@deprecated:不推荐使用的方法。
@param:方法的参数类型。
@return:方法的返回类型。
@see:用于指定参考的内容。
@exception:抛出的异常。
@throws:抛出的异常,和exception同义

2、说一下java的数据类型

Java的数据类型包含两种:一种是基本数据类型,另一种是引用类型;基本数据类型包括整型有(byte、short、int、long)(1,2,4,8)、浮点型有(float、double)(4,8)、字符型有(char)(2)、还有一个布尔型(boolean);引用类型一般有类、接口、数组。

数据类型 字节数 位数 默认值 包装类型 使用说明[取值范围]
byte 1 8 0 Byte -128~127
short 2 16 0 Short -2 ( ( (15)))~2 ( ( (15)))-1
int 4 32 0 Integer -2 ( ( (31)))~2 ( ( (31)))-1
long 8 64 0L或0l Long -2 ( ( (63)))~2 ( ( (63)))-1
float 4 32 0.0F或0.0f Float 1.4E-45~3.4E38
double 8 64 0.0d Double 4.9E-324~1.8E308
char 2 16 空 Character 使用Unicode编码(2个字节),可存汉字
boolean - - false Boolean 只有true和false两个取值

3、整型的默认数据类型是什么,浮点型的数据类型是什么?

整型的默认数据类型是int
浮点型默认数据类型是double

4、final关键字作用?

①final修饰类时表示该类不能被继承。
②final修饰变量时表示该变量为常量,只能赋值一次;
③final修饰方法时表示该方法不能被重写;

拓展1:final修饰一个变量,是引用地址不能变,还是对象不能变?
答:final修饰的对象,该对象地址不会再改变,但对象的内容是可以改变的。

5、如何将一个整型转为字符串,反之,将一个字符串类型的数据转为整型

整型转为字符串用 String.valueOf(int parameter)
字符串转为整型用 Integer.parseInt(String parameter)

6、说一下break与continue作用

①break语句有两个作用:第一个是跳出当前循环体,执行循环体之外的语句,第二个是跳出switch语句,
②continue语句是表示中止本次循环,继续执行下一次循环。

7、什么是方法的重载

同一个类中方法名相同,参数的类型、数量、顺序不同的一组方法。

8、说一下值传递与引用传递

1、Java数据类型包括基本数据类型和引用数据类型,基本数据类型使用值传递,传递的是数值的副本,当使用值传递交换数据时,原数据不会发生改变;
2、引用数据类型使用的是引用传递,传递的是地址,当使用引用传递交换数据时,因为地址指向的数据内容相同,所以修改数据时原数据也会发生改变。

9、如何获取数组元素的数量

数组通过length属性获取
字符串通过length()方法获取

拓展1: java中的length属性,length()、size()的区别?
答:length属性可以获取数组的长度;
length()方法是字符串里的一个方法,用来获取字符串长度;
size()方法是集合中的方法,用来获取集合中元素的个数。

拓展2: 什么是泛型?
答:是用来统一集合中存放元素的数据类型。

10、写出数组排序(冒泡法排序)

冒泡排序就是依次比较相邻的两个数,以升序为例,就是将小数放前面,大数放后面;假设需要排序的序列个数为n,则需要经过n-1轮,最终完成排序。在第一轮中,比较的次数是n-1次,之后每轮次数减一。

/* 冒泡排序 */
    public static void bubleSort(int[] arr) {
   
   
        int temp;// 临时变量
        for (int i = 0; i < arr.length - 1; i++) {
   
   // 需要比较n-1轮
            for (int j = 0; j < arr.length - i - 1; j++) {
   
   // 每轮需要比较的次数逐轮减少1次
                if (arr[j] > arr[j + 1]) {
   
   // 相邻元素比较,符合条件交换
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }

11、String能被继承吗?

String是被final关键字修饰的最终类,不能被继承。

12.说一下字符串操作常见的API ?(10个左右即可)

首先看到一个字符串,
①(字符串本身方法)首先想到的是他的长度length()方法,判断是否为空empty()方法,然后是指定位置的字符串charAt(),某个字符串第一次出现时的下标indexOf()方法,替换某个字符replace()方法,字符串以什么开头startsWith()方法,以什么结尾endsWith()方法,字符串转为大写toupperCase()方法,转为小写toLowerCase()方法,字符串截取subString()方法,是否包含某个字符串contains()方法。
②字符串转换:以什么分隔符分割为数组split()方法,转为数组toCharArray()方法,去掉字符串两边空格trim()方法,转为整型String.valueOf()

+、 concat(String str) 字符串连接
equals(Object anObject)、equalsIgnoreCase(String another String) 字符串比对
charAt(index) 获取指定位置字符值
length() 获取字符串长度
indexOf(String str) 获取指定字符串第一次出现的下标值
replace(char oldChar,char newChar) 字符串替换
startsWith(String prefix)|endsWith(String prefix) 判断是否以指定字符串开始|结束
toLowerCase()|toUpperCase() 所有字符转换为小写|大写
substring(index) 字符串截取
trim() 去除左右空格
String.valueOf(int i) 将整型转为字符串
contains(String str) 判断字符串是否包含某子字符串
isEmpty() 判断字符串是否为空
split(String regex) 指定分隔符返回分割后的字符数组
toCharArray() 将字符串转为字符数组

13、字符串比较:==与equals区别?

“==”在基本数据类型中比较的是值,在对象中比较的是地址。
“equals”原先是Object类中定义的方法,是用来比较两个对象是否相同的;但在String类中对此方法进行了重写,使其用来比较两个字符串的值是否相同。

拓展1 为什么string类创建的字符是不可变的?
答:string类底层采用char[]数组来存放字符串,这个数组是被final修饰的,一旦创建就指向某一对象,之后不可变。

拓展2 为什么stringBuffer和stringBuilder是可变的?
答:stringBuffer/stringBuilder底层也使用了字符数组,但没有被final修饰,因此可变。

拓展3 string、stringBuffer和stringBuilder三个类的区别?
答:三者都是被final修饰的最终类,只是string的字符数组被final修饰,而stringBuffer和stringBuilder的字符数组没有被final修饰。

14、String与StringBuffer的区别?

String创建一个不可变的字符序列;
StringBuffer创建一个可变的字符序列。
在对字符串进行追加操作时StringBuffer比String效率高

拓展1: 为什么StringBuffer的效率高于string?
答:对string进行追加操作时每次都要创建一个新的string对象;而对StringBuffer进行追加操作时,是直接对StringBuffer对象本身进行操作的,不用重新创建新对象。

15、StringBuffer与StringBuilder的区别?

StringBuffer和StringBuilder都是创建一个可变的字符序列
StringBuffer是线程安全的,而StringBuilder是线程非安全的
在对字符串进行修改操作时,StringBuilder效率高于StringBuffer

拓展1: StringBuffer为什么是线程安全的?
答:因为StringBuffer中的方法都加了synchronized关键字。
拓展2: StringBuilder效率为什么高于StringBuffer?
答:因为StringBuffer是线程安全的,使用StringBuffer时需要维护同步数据会比较消耗资源。
拓展3: 大家在开发时一般使用StringBuilder还是StringBuffer?
答:一般对字符串进行操作,并不会使用到多线程,所以一般开发时使用StringBuilder。

16、说一下你知道的java中常见的包

java.lang:系统基础类库。比如有:String、Math、System、Thread等等;
java.util:Java工具类,包含对集合的操作、日期时间设置等等各种使用工具类;
java.io:io流文件的读写操作;
java.net:为实现网络应用程序而提供的类;
java.awt/javax.swing:用于窗体开发的类;
java.sql:数据库操作类库。

17.1 、说一下什么是封装?

封装:就是将抽象得到的属性和行为结合起来,形成一个有机的整体,也就是类。类里面的一些属性和方法(尤其是属性)需要隐藏起来,不希望直接对外公开,但同时提供外部访问的方法来访问这些需要隐藏的属性和方法。

拓展1 封装的作用是什么?
答:封装是面向对象的三大特征之一,封装之后会参数真正的独立体,提高了程序的复用性,只对外界提高简单的入口操作,提高了程序的安全性。

17、说一下java中类的四种封装?

修饰符 类内部 同一个包中 子类 任何地方
private
default
protected
public

18、面向对象的三大特点是什么?

封装、继承、多态

拓展1 多态的作用?
答:降低了程序的耦合度,提高了程序的扩展力。

19、java中如何实现继承?java中能实现多重继承吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值