网站建设交流发言稿,找做网站的上什么app,专业团队高清壁纸,企业网站注销流程30.基本数据类型有哪些#xff1f;内存大小#xff1f;
类型字节取值范围默认值整数型byte1-2^7~2^7-10short2-2^15~2^15-1int4-2^31~2^31-1long8-2^63~2^63-1浮点型float4比int大0.0fdouble8比long大0.0字符型char20~65535\u0000布尔型boolean1或4true/falsefalse
31.基本…30.基本数据类型有哪些内存大小
类型字节取值范围默认值整数型byte1-2^7~2^7-10short2-2^15~2^15-1int4-2^31~2^31-1long8-2^63~2^63-1浮点型float4比int大0.0fdouble8比long大0.0字符型char20~65535\u0000布尔型boolean1或4true/falsefalse
31.基本数据类型的自动转换
小范围的基本数据类型会自动隐式转换为大范围的基本数据类型
32.两个byte类型相加结果是什么类型
整数型与整数型之间进行算术运算结果为int
33.变量和常量的区别
变量声明时可以不初始化可以重复赋值是在运行中可能变化的量
常量声明后必须初始化不可以重复赋值在运行中不会变化的量。
34.基本数据类型和引用类型的区别
基本数据类型只是用来存储数据的不是对象没有属性和方法不满足面向对象思想
引用类型所有的引用类型都是Object类的子类继承了Object的方法满足面向对象思想。
35.前置和后置的区别
a与a对于a是没有区别的但对整个表达式的值来说a是先返回a的值后a自增a是先自增然后返回自增后的值。
36.%可以对小数求余吗%可以对负数求余吗
可以对小数取余不过可能会丢失精度可以对负数取余结果的符号和被取余数的符号一致。
37.什么是短路运算
在逻辑运算表达式中当前一个表达式的值已经能够确定整个表达式的值时后一个表达式将不会运行。逻辑与和逻辑或都存在短路现象。
38.和运算符的区别
是按位与运算符需要将两边都转成二进制然后按位比较没有短路现象 是逻辑与运算符有短路现象
39.如何快速计算乘以2的n次方
进行移位运算在二进制位操作时左移n位。
40.switch语句支持哪些类型
只支持byte、short、int、char、String、Enum枚举
41.while和do…while的区别
while继续循环的条件在前先判断循环条件在执行循环体
do...while循环体在前循环条件在后不管循环条件是否满足至少执行一次循环体。
42.break和continue的区别
break直接结束当前循环continue跳出本次循环继续执行下一次循环。
43.如何跳出多重循环
一种是对外层循环命名一个lable标签然后直接break标签跳出指定循环
另一种是设一个布尔型的锁给每层循环加锁需要跳出循环时将锁变量设为false。
44.什么是死循环/无限循环
死循环没有循环结束条件的循环
无限循环循环结束的条件永远达不到。
45.数组的初始化有哪两种方式
静态初始化在声明数组是直接对数组进行静态赋值
动态初始化声明时先开辟指定长度的数组空间后续再给数组元素具体赋值
46.二分查找算法时间复杂度
二分查找算法又称为折半查找算法它是一种用于在有序数组中查找某一特定元素的算法。
二分查找算法的基本思想是将查找范围不断折半然后与目标元素进行比较根据比较结果确定下一次查找范围直到找到目标元素或者确定目标元素不存在为止。
二分查找算法的时间复杂度为O(log n)其中n表示数组的长度。这是因为每次查找都将查找范围缩小一半因此最多需要log n次查找就可以找到目标元素或者确定目标元素不存在。
47.十大排序算法有哪些
冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序要会写。
48.快速排序的算法思想时间复杂度
快速排序Quick Sort是一种分治法排序算法其基本思想是通过一趟排序将待排序序列分割成两个子序列其中一个子序列的所有元素都小于等于基准元素另一个子序列的所有元素都大于等于基准元素然后再对这两个子序列递归地进行快速排序直到整个序列有序。
快速排序的时间复杂度为O(nlogn)其中n是待排序序列的长度。在最坏情况下即序列已经有序的情况下快速排序的时间复杂度为O(n^2)。
49.超大数组排序怎么处理
使用桶排序对序列分组缩小范围后再排序。
50.什么是递归调用
一个方法在内部调用自身有递归逻辑递归调用递归边界。
51.什么是可变参数
在参数列表最后一位设置一个int... a来表示可变参数一个方法的可变参数只能有一个且在参数列表最后可变参数的指的是参数数量可变但类型不可变使用时可将数组作为可变参数传入也可以不传。
52.传值调用和引用调用的区别
传值调用在传值调用中方法调用时实际参数的值会被复制给形式参数方法内部对形式参数的修改不会影响到实际参数的值。
引用调用在引用调用中方法调用时实际参数的引用地址会被传递给形式参数方法内部对形式参数的修改会影响到实际参数的值。
虽然Java中的参数传递采用的是传值调用机制但是对于引用类型的参数传递的是引用的副本即方法内部对形参的修改可能会影响到实参的值。这个过程看起来像是引用调用但实际上是通过传值调用实现的。
53.native关键字的作用
修饰其他语言写的方法原生的本地的 面向对象
54.什么默认构造器
构造器即构造方法当一个类没有定义任何构造方法时系统会赋予一个默认的空的构造方法。
55.面向对象三大特性
封装隐藏细节不允许随意访问通过四个访问权限修饰符实现
继承子类继承父类的属性和方法
多态调用方法时可能出现不同的结果分为重载导致的静态多态和重写导致的动态多态。
56.构造方法可以继承吗
构造方法不可以被继承子类只能通过super指定调用父类的构造方法。
57.私有方法可以继承吗
不可以私有方法用private修饰只能本类访问子类没有访问权限无法继承父类的私有方法。
58.什么是重载
重载是指在同一个类中方法名相同而参数列表不同。
59.什么是重写重写的限制有哪些
子类对继承过来的父类的方法进行重写返回值类型方法名参数列表都相同方法体不同
必须是继承过来的如果父类的方法是final或private修饰则不叫继承。
60.重载与重写的区别
重载发生在同一个类中方法名相同参数列表不同是导致静态多态的原因
重写发生在子类和父类之间除方法体不同其他都要与父类一致是导致动态多态的原因。
61.权限修饰符有哪些访问范围
public所有类都可访问
protected本包下及其子类可访问
default本包下可访问
private仅本类中可访问
62.接口和抽象类的区别
接口是一种抽象数据类型使用Interface修饰接口中定义的属性都是常量默认public static final修饰方法都是抽象方法默认public abstract修饰。接口定义了一组方法的规范接口不能继承类但可以继承多个接口一个类可以实现多个接口
抽象类是一种特殊的类使用abstract关键字修饰抽象类不能实例化用来被继承可以有也可以没有抽象方法可以继承类或者抽象类可以实现接口。
63.抽象类和抽象方法的关系
抽象类是一个不能被实例化的类它只能被继承。抽象类通常用来定义一些共同的属性和方法这些方法可以被子类继承和实现
抽象方法是一个没有方法体的方法即它只有方法名和参数列表没有具体实现。它要求继承这个抽象类的实体类来实现抽象方法。
64.如何理解单继承多实现
一个类只能有一个直接父类可以实现多个接口避免了多重继承可能导致的复杂性和歧义性。
65.接口可以继承吗接口的继承是单继承吗
接口不能继承类但可以继承接口接口的继承是多继承可以继承多个接口
66.static关键字的作用
static关键字的作用是用来声明或修饰类的成员变量、方法和代码块使其成为类级别的而不是实例的不需要创建实例就能通过类名直接调用。
67.final关键字的作用
修饰类不能被继承修饰方法不能被重写修饰量不能被重新赋值
68.abstract能与final联用吗为什么
不能abstract是抽象的抽象类不能创建实例需要被继承抽象方法没有方法体需要通过子类重写实现这和final修饰的约束相矛盾。
69.this和super的作用
this在本类中使用用于代表当前对象指代类的属性super在子类中使用用于指代父类。
70.什么是内部类什么是匿名内部类
内部类是在一个类内部定义的类。它可以访问外部类的成员包括私有成员。内部类可以分为静态内部类、通过实例对象调用的成员内部类、定义在方法中的局部内部类、匿名内部类
匿名内部类是一种没有名字的内部类它通常是在创建对象的时候定义和使用。它没有独立的构造函数并且只能继承一个类或实现一个接口。使用匿名内部类可以简化代码并且可以在需要创建临时对象的地方直接使用。
71.创建子类对象时父类静态块、块、构造器、子类静态块、块、构造器的执行顺序
父类静态代码块-子类静态代码块-父类代码块-父类构造器-子类代码块-子类构造器 常用类
72.什么是HashCode
HashCode是一种用于快速查找数据的技术它可以将任意长度的输入数据映射为固定长度的哈希值。HashCode通常用于哈希表和哈希集合中以提高数据的查找性能。
73.Hash协定是什么
同一个对象多次调用hashCode返回相同的整数
两个变量指向的对象equals值相等则hashCode值也相等。
74.finalize方法的作用
当一个对象要被回收销毁时执行的方法是一个对象最后要执行的方法。
75.深浅克隆Object的clone()是深还是浅克隆
深浅克隆是指在复制对象时是否也复制对象引用指向的对象。具体来说
浅克隆浅克隆只复制对象本身而不复制引用对象。即新对象和原对象共享引用对象。如果被克隆的对象中有引用类型的成员变量克隆后的对象和原对象共享同一个引用对象。深克隆深克隆不仅复制对象本身还复制引用对象。即新对象和原对象拥有各自的引用对象。即使被克隆的对象中有引用类型的成员变量克隆后的对象和原对象也拥有各自的引用对象。
在Java中Object类提供了一个clone()方法用于对象的复制。但是Object的clone()方法执行的是浅克隆即只复制对象本身不复制引用对象。如果需要实现深克隆就需要重写clone()方法手动复制引用对象。
76.和equals的区别
比较基本数据类型是比较值是否相等比较引用类型是比较对象是否是同一个即内存地址是否相等
equals方法是Object类的一个方法用于比较两个对象的内容是否相等。它比较的是对象的内容。默认与一样但是可以通过重写equals自定义比较的内容。
77.为什么String是常量
String类中用一个字符数组存储数据这个数组用private final修饰不可被修改
78.String类可以有子类吗为什么
不可以String用final修饰不允许继承
79.String对象的创建机制和new创建的区别
使用 创建String对象时Java首先会在字符串常量池中搜索看是否已经存在相同的字符串对象。如果存在那么就将已存在的对象引用返回如果不存在就会在字符串常量池中创建一个新的String对象并将它的引用返回给变量。使用new关键字创建String对象时Java会在堆内存中创建一个新的String对象并将它的引用返回给变量。使用new关键字创建String对象会绕过字符串常量池的检查每次都会创建一个新的对象。
80.String的intern方法有什么作用
intern()方法是用于将字符串对象添加到字符串常量池中并返回字符串常量池中的引用。它先检查字符串对象是否在字符串常量池中存在副本如果已经存在直接返回副本对象如果不存在就复制一份存入常量池中然后返回常量池中的副本对象。
81.StringBuffer与StringBuilder的区别
StringBuffer的方法用 synchronized 修饰实现线程同步
StringBuffer线程安全但效率不如StringBuilder。
82.StringBuffer/StringBuilder的扩容机制
先初始化一个默认的容量大小16。如果当前容量不足则会进行扩容。
扩容机制是通过数组来实现的。当容量不足时会创建一个更大的数组并将原来的字符串内容复制到新的数组中。扩容的新数组是原数组容量*22
83.自动装箱和自动拆箱是什么自动装箱和自动拆箱时需要注意什么
自动装箱是指将基本类型自动转换为对应的包装类型。
自动拆箱是指将包装类型自动转换为基本类型。
要注意空指针异常、性能开销和类型匹配等问题以确保程序的正确性和性能效率。
84.包装类的缓存机制
当程序中频繁使用某个基本数据类型的包装类时每次创建新的包装类对象都会消耗一定的性能和内存资源。为了避免频繁创建对象基本数据类型的包装类在设计时使用了缓存机制。缓存机制的设置可以提高性能和节省内存空间。
基本数据类型的封装类缓存范围整数型包括Byte、Short、Integer、Long-128~127浮点型Float、Double没有缓存字符型Character0~127布尔型Booleanfalse和true
85.包装类型能不能使用进行比较为什么
不能包装类型是引用类型不是基本数据类型。在Java中使用运算符比较引用类型时比较是不是同一个对象即引用地址而不是对象的实际内容。因此当比较包装类型对象时运算符将比较它们的引用地址并不会比较它们的实际值。 未完待续...