一个网站如何做外链,在工行网站上如何做现金理财,农业品牌建设的基础是,济南做网络安全的公司JAVA相关
JAVA语言概述
1. 一个.java源文件中是否可以包含多个类#xff1f;有什么限制#xff1f;
可以。 一个源文件可以声明多个类#xff0c;但是最多只能有一个类使用public进行声明 且要求声明public的类的类名与源文件相同。
2. Java的优势#xff…JAVA相关
JAVA语言概述
1. 一个.java源文件中是否可以包含多个类有什么限制
可以。 一个源文件可以声明多个类但是最多只能有一个类使用public进行声明 且要求声明public的类的类名与源文件相同。
2. Java的优势
跨平台性安全性高简单性高性能面向对象性健壮性社区繁荣
3. Java中是否存在内存溢出、内存泄漏如何解决
存在。 内存溢出、内存泄漏程序在执行过程中已经不再使用的内存空间 JVM通过相关算法判定以后不认为是垃圾于是构成内存泄漏
4. 如何看待Java是一门半编译半解释型语言
java源码经过编译器生成字节码(.class)字节码可以通过解释器解释执行 | JIT编译器编译执行得到机器码
变量与运算符
1. 如何高效的计算2*8的值
使用左移
2. 和区别
都是表示且的关系左边是false时仍然执行左边是false不再执行
3. Java中的基本数据类型有哪些String时最基本的数据类型吗
8种基本数据类型byteshortintlongcharboolenfloatdouble String不是属于引用类型
4. Java开发中计算金额是是用什么数据类型
不能使用doublefloat因为精度不高 使用BigDecimal类替换可以实现任意精度的运算
5. char变量中能不能存储一个中文汉字
可以应为char使用Unicode字符集包含了世界范围的所有字符集。 char中
6. 代码分析
short s11;
s1s11; //有什么错右边是int类型需要强制转换short s11;
s11; //有什么错没错7. int i0; i; 执行这两句话后i的值为
0
8. 如何将两个变量值互换
String s1 abc
String s2 defString temp s1;
s1 s2;
s2 temp;9. boolean占几个字节
编译的时候不谈占几个字节。 但是JVM再给boolean类型分配内存空间是boolean类型的变量占据一个slot4B。 拓展在内存中byte\short\char\int\boolean\float占用1个slot ______________________________double\long占用2个slot 10. 为什么Java中0.10.2≠0.3?
不是每个小数都有对应的二进制数字可以采用四舍五入或同乘同除方法进行验证避免上述问题。
流程控制语句
1. break和continue的作用 2. if分支语句和switch分支语句的异同之处
if-else语句优势
if语句的条件是一个布尔类型值if条件表达式为true则进入分支可以用于范围的判断也可以用于等值的判断使用范围更广。
switch语句的条件是一个常量值byte,short,int,char,枚举,String只能判断某个变量或表达式的结果是否等于某个常量值使用场景较狭窄。
switch语句优势
当条件是判断某个变量或表达式是否等于某个固定的常量值时使用if和switch都可以习惯上使用switch更多。因为效率稍高。当条件是区间范围的判断时只能使用if语句。
使用switch可以利用穿透性同时执行多个分支而if…else没有穿透性。
3. switch语句中忘写break会发生什么
case穿透
4. Java至此和那些类型循环
whiledo-whileforforeach
5. while和do-while循环的区别
do-while至少会执行一次
IDEA安装与使用
1. 开发中你接触过的开发工具有哪些
IDEAEclipse
2. 谈谈你对Eclipse和IDEA使用上的感受
IDEA是一种智能化开发工具Eclipse不够人性化
数组
1. 数组有没有length()这个方法String有没有length()这个方法
数组没有length()方法是length属性 String有length()方法
2. 有数组int[] arr用Java代码将数组元素顺序颠倒
for(int i0;iarr.length/2;i){int temparr[i]arr[i]arr[arr.length-i-1];arr[arr.length-i-1]temp;
}3. 为什么数组要从0开始编号而不是1
数组索引表示了数组元素距离首地址的偏移量。因为第一个元素与首地址元素相同所以偏移量为0。
4. 数组有什么排序手写
冒泡排序快速排序二分算法
/*
1、冒泡排序最经典
思想每一次比较“相邻位置相邻”元素如果它们不符合目标顺序例如从小到大就交换它们经过多轮比较最终实现排序。例如从小到大 每一轮可以把最大的沉底或最小的冒顶。过程arr{6,9,2,9,1} 目标从小到大
第一轮第1次arr[0]与arr[1]69不成立满足目标要求不交换第2次arr[1]与arr[2]92成立不满足目标要求交换arr[1]与arr[2] {6,2,9,9,1}第3次arr[2]与arr[3]99不成立满足目标要求不交换第4次arr[3]与arr[4]91成立不满足目标要求交换arr[3]与arr[4] {6,2,9,1,9}第一轮所有元素{6,9,2,9,1}已经都参与了比较结束。第一轮的结果第“一”最大值9沉底本次是后面的9沉底即到{6,2,9,1,9}元素的最右边
第二轮第1次arr[0]与arr[1]62成立不满足目标要求交换arr[0]与arr[1] {2,6,9,1,9}第2次arr[1]与arr[2]69不成立满足目标要求不交换第3次arr[2]与arr[3]91成立不满足目标要求交换arr[2]与arr[3] {2,6,1,9,9}第二轮未排序的所有元素 {6,2,9,1}已经都参与了比较结束。第二轮的结果第“二”最大值9沉底本次是前面的9沉底即到{2,6,1,9}元素的最右边
第三轮第1次arr[0]与arr[1]26不成立满足目标要求不交换第2次arr[1]与arr[2]61成立不满足目标要求交换arr[1]与arr[2] {2,1,6,9,9}第三轮未排序的所有元素{2,6,1}已经都参与了比较结束。第三轮的结果第三最大值6沉底即到 {2,1,6}元素的最右边
第四轮第1次arr[0]与arr[1]21成立不满足目标要求交换arr[0]与arr[1] {1,2,6,9,9}第四轮未排序的所有元素{2,1}已经都参与了比较结束。第四轮的结果第四最大值2沉底即到{1,2}元素的最右边
*/
public class Test19BubbleSort{public static void main(String[] args){int[] arr {6,9,2,9,1};//目标从小到大//冒泡排序的轮数 元素的总个数 - 1//轮数是多轮每一轮比较的次数是多次需要用到双重循环即循环嵌套//外循环控制 轮数内循环控制每一轮的比较次数和过程for(int i1; iarr.length; i){ //循环次数是arr.length-1次/轮for(int j0; jarr.length-i; j){//希望的是arr[j] arr[j1]if(arr[j] arr[j1]){//交换arr[j]与arr[j1]int temp arr[j];arr[j] arr[j1];arr[j1] temp;}}}//完成排序遍历结果for(int i0; iarr.length; i){System.out.print(arr[i] );}}
}面向对象基础
1. 代码输出 int[] arr new int[]{1,2,3};System.out.println(arr);char[] arr1 new char[]{a,b,c};System.out.println(arr1);boolean[] arr2 new boolean[]{true,false,false};System.out.println(arr2);int地址 charabc boolean地址
2. 代码问题
编写method(a,b)输出a100b200 public static void main(String[] args) {int a 10;int b 10;method(a,b);System.out.println(aa);System.out.println(bb);}解答 public static void main(String[] args) {int a 10;int b 10;method(a,b);System.out.println(aa);System.out.println(bb);}public static void method(int a,int b){aa*10;bb*20;System.out.println(aa);System.out.println(bb);System.exit(0);//强制退出}形参是基本数据类型将实参基本数据类型变量的“数据值”传递给形参 形参是引用数据类型将实参引用数据类型变量的“地址值”传递给形参
3. 面向对象面向过程理解 面向过程的程序设计思想Process-Oriented Programming简称POP 关注的焦点是过程过程就是操作数据的步骤。如果某个过程的实现代码重复出现那么就可以把这个过程抽取为一个函数。这样就可以大大简化冗余代码便于维护。 典型的语言C语言 代码结构以函数为组织单位。 是一种“执行者思维”适合解决简单问题。扩展能力差、后期维护难度较大。 面向对象的程序设计思想 Object Oriented Programming简称OOP 关注的焦点是类在计算机程序设计过程中参照现实中事物将事物的属性特征、行为特征抽象出来用类来表示。 典型的语言Java、C#、C、Python、Ruby和PHP等 代码结构以类为组织单位。每种事物都具备自己的属性和行为/功能。 是一种“设计者思维”适合解决复杂问题。代码扩展性强、可维护性高。 4. Java引用类型有几种
类数组接口枚举记录注解
5. 类和对象的区别
类是抽象的 对象是具体的是类的实例
6. 对象存在Java内存的哪块区域里
堆空间
7. private、缺省、protected、public的作用区域 8. main方法的public能不能换成private为什么
能。当修改以后就不能作为程序入口就只是一个普通的方法。
9. 构造方法和普通方法有什么区别
编写代码角度声明格式作用均不同 字节码文件角度构造器会以init()方法的形态呈现用以初始化对象
10. 构造器Constructor是否可以被overload
可以
11. 无参构造器和有参构造器的作用和应用
初始化属性
12. 成员变量和局部变量区别
1、声明位置和方式
1实例变量在类中方法外
2局部变量在方法体{}中或方法的形参列表、代码块中
2、在内存中存储的位置不同
1实例变量堆
2局部变量栈
3、生命周期 1实例变量和对象的生命周期一样随着对象的创建而存在随着对象被GC回收而消亡而且每一个对象的实例变量是独立的。
2局部变量和方法调用的生命周期一样每一次方法被调用而在存在随着方法执行的结束而消亡而且每一次方法调用都是独立。
4、作用域
1实例变量通过对象就可以使用本类中直接调用其他类中“对象.实例变量”
2局部变量出了作用域就不能使用
5、修饰符后面来讲
1实例变量public,protected,private,final,volatile,transient等
2局部变量final
6、默认值
1实例变量有默认值
2局部变量没有必须手动初始化。其中的形参比较特殊靠实参给它初始化。
13. 变量赋值和构造方法加载的优先级问题
变量显式赋值先于构造器赋值字节码文件
面向对象进阶
1. 区分方法重载和重写
重载方法名相同形参列表不同。不看返回值类型。 重写不同类中继承以后子类覆盖父类中方法
2. 区分 和 equals() 既可以比较基本类型也可以比较引用类型。对于基本类型就是比较值对于引用类型就是比较内存地址 equals只能用在引用数据类型上它是属于java.lang.Object类里面的方法如果该方法没有被重写过默认也是我们可以看到String等类的equals方法是被重写过的而且String类在日常开发中用的比较多久而久之形成了equals是比较值的错误观点。 具体要看自定义类里有没有重写Object的equals方法来判断。 通常情况下重写equals方法会比较类中的相应属性是否都相等。
3. 父类哪些成员可以被继承属性可以被继承吗
父类属性、方法、属性可以被继承。 构造器可以被子类调用
4. overload是否可以改变返回值类型
不可以。返回值不是重载需要改变的。
5. 构造器可以被overrid
不可以。构造器可以被重载。
6. 为什么要重载随便命名一个别的函数不行吗
见名知意
7. super和this的区别
this关键字引用的是当前对象。它用于引用当前对象的实例变量和方法。使用this关键字可以让我们避免在代码中重复使用相同的变量名。super关键字用于引用父类的成员实例变量或方法。它通常用于子类中当子类需要访问父类的成员时。使用super可以明确地引用父类的成员避免二义性。
8. 多态的理解
广义理解子类对象的多态性、方法的重写、方法的重载 格式Object obj new String(hello);父类的引用指向子类对象 多态好处减少了大量的重载方法定义
9. 多态new出来的对象和不多态new出来的对象有什么区别
Person p new Man();虚对象方法屏蔽了子类Man类特有的属性和方法 Person p new Person();
10. 重写equals方法注意什么
明确判定两个对象实体equals()标准。是否需要所有属性参与。 对象的属性且为自定义类型此属性也需要重写equals()
11. Java中所有的父类是什么都有什么方法
Object类 equals(),toString(),clone(),finalize(),getClass(),hashCode()
面向对象高级
1. 对比静态变量与实例变量
个数 静态变量在内存空间中只有一份被类的多个对象共享 实例变量类的每一个实例或对象都保存着一份实例变量 内存位置 静态变量jdk6之前存放在方法区之后存放在堆空间 实例变量存放在堆空间的对象实体中 加载时机 静态变量随着类的加载而加载由于类只会加载一次所以静态变量也只有一份 实例变量随着对象创建而加载每个对象拥有一份实例变量 调用者 静态变量可以被类直接调用也可以使用对象调用 实例变量只能使用对象进行调用 判断是否可以调用——从生命周期的角度 消亡时机 静态变量随着类的卸载而消亡 实例变量随着对象的消亡而消亡 2. 开发中什么时候需要将属性声明为静态的方法
判断当前类的多个实例是否能共享此成员变量且此成员变量的值是相同的开发中常将一些常量声明是静态的
方法内操作的变量都是静态变量而非实例变量则此方法将声明为静态方法 常常将工具类声明为静态方法
3. 为什么抽象类不可以使用final关键字声明
因为抽象类不能实例化只能被继承但final的类规定不能被继承
https://blog.csdn.net/weixin_50757957/article/details/127910601
4. 一个抽象类中可以定义构造器吗
可以因为当子类继承父类时需要调用父类的构造器。
5.是否可以这样理解抽象类就是比普通类多定义了抽象方法除了不能直接进行类的实例化操作之外没有任何不同
抽象类里不一定有抽象方法但抽象方法所属的类一定是抽象类。
链接https://www.jianshu.com/p/130429e47d99