- 博客(70)
- 收藏
- 关注
原创 集合 面试题
集合 面试题 1.HashSet 是如何保证数据不可重复的? 答:HashSet 的底层其实就是 HashMap,只不过 HashSet 实现了 Set 接口并且把数据作为 K 值,而 V 值一直使用一个相同的虚值来保存,我们可以看到源码: public boolean add(E e) { return map.put(e, PRESENT)==null;// 调用 HashMap 的 ...
2020-04-27 16:41:35
217
原创 克隆 面试题
克隆 面试题 1.以下代码执行的结果是? import java.util.Arrays; class CloneTest { public static void main(String[] args) throws CloneNotSupportedException { CloneObj cloneObj = new CloneObj(); clone...
2020-04-27 16:10:01
236
原创 抽象类和接口 面试题
抽象类和接口 面试题 1.添加以下哪个选项不会引起编译器报错? abstract class AbstractAnimal { static String animalName = "AbstractAnimal"; // 添加代码处 } A:protected abstract void eat(); B: void eat(); C:abstract void eat()...
2020-04-27 15:39:53
347
原创 类与 Object 面试题
类与 Object 面试题 1. 以下程序执行的结果是? class ExecTest { public static void main(String[] args) { Son son = new Son(); } } class Parent{ { System.out.print("1"); } static{ ...
2020-04-27 14:20:18
380
原创 数组和排序算法 面试题
数组和排序算法 面试题 1. 以下代码访问数组元素打印的结果是多少? int[] arr = new int[5] {1, 2, 3, 4, 5}; System.out.println(arr[4]); 答:程序编译报错,在 Java 中初始化数组时,如果直接给数组赋值,不能声明数组长度;如果声明了数组长度,则不能赋值给数组,否则编译器报错。 正确的写法如下: int[] arr = n...
2020-04-27 11:13:25
580
原创 Java 中的异常处理 面试题
Java 中的异常处理 面试题 1. 以下代码 catch 里也发生了异常,程序会怎么执行? try { int i = 10 / 0; System.out.println("try"); } catch (Exception e) { int j = 2 / 0; System.out.println("catch"); } finally { Syst...
2020-04-01 17:11:21
305
原创 Java 中的运算符和流程控制 面试题
Java 中的运算符和流程控制 面试题 1. Java 中 i++ 和 ++i 有什么区别? 答:i 先赋值再运算;i 先运算再赋值。 示例代码: int i = 0; int i2 = i++; int j = 0; int j2 = ++j; System.out.println("i2=" + i2); System.out.println("j2=" + j2); 输出结果:i2=0,...
2020-04-01 15:51:07
218
原创 字符串 面试题
字符串 面试题 1. String 属于基础数据类型吗? 答:String 不是基础数据类型,它是从堆上分配来的。基础数据类型有 8 个,分别为:boolean、byte、short、int、long、float、double、char。 java 中String 是个对象,是引用类型 ,基础类型与引用类型的区别是,基础类型只表示简单的字符或数字,引用类型可以是任何复杂的数据结构 ,基本类型仅表示...
2020-04-01 14:26:15
382
原创 基本数据类型和包装类的 面试题
基本数据类型和包装类的 面试题 1. 以下 Integer 代码输出的结果是? Integer age = 10; Integer age2 = 10; Integer age3 = 133; Integer age4 = 133; System.out.println((age == age2) + "," + (age3 == age4)); 答:true,false 此题考的是:高频区间...
2020-04-01 13:23:59
392
原创 2.62.特殊类的总结
特殊类的总结 **枚举 枚举就是有固定个数实例的类 枚举的父类是Enum 非公有类 最不特殊的类,可以认为就是被缺省访问控制符修饰的类。也就是说,和public class 的区别仅仅是可以被访问的范围不一样 如果一个文件只有非公有类,那么类名和文件名可以不一样。当然文件后缀必须是 java 。 内部类 内部类的特殊之处在于可见性和可以访问的数据以及方法。内部类会被认为是类本身的代码,所以外部类的...
2020-03-12 13:25:06
196
原创 2.61.匿名类
匿名类是用来创建接口或者抽象类的实例的 匿名类可以出现在任何有代码的地方 看例程:学习匿名类的使用 public class UseAnonymousClass { public static void main(String[] args) { Phone phone = new Phone( "手机001", "Phone001", 100, 1...
2020-03-12 13:19:29
143
原创 2.60.局部内部类
看例程:学习局部内部类 对比记忆:局部内部类可以被什么修饰,可以在哪里使用,可以对比局 部变量 public class Phone extends MerchandiseV2 { // 给Phone增加新的属性和方法 private double screenSize; private UnitSpec cpu; private UnitSpec memoryG...
2020-03-12 13:12:57
157
原创 2.59. 成员内部类
看例程:学习成员内部类语法 看例程:学习在外部创建成员内部类的对象的语法 对比记忆:成员内部类可以被什么修饰,可以在哪里使用,可以对比成员变量 public class UsePhoneMerchandise { public static void main(String[] args) { Phone phone = new Phone( "手机...
2020-03-12 13:06:12
129
原创 2.58.静态内部类
看例程:静态内部类的语法,了解其和外部类互相的可访问性 看例程:静态内部类在定义它的外部使用 对比记忆:静态内部类可以被什么修饰,可以在哪里使用,可以对比静态变量 看 Math 类源代码,学习静态内部类的一种曲线用途:实现单例模式 public class UsePhoneMerchandise { public static void main(String[] args) { ...
2020-03-12 12:02:41
179
原创 2.57.接口内的代码的更多内容
在 Java 8 中,接口中允许有静态方法,私有方法和带有缺省实现的抽象方法 看例程:接口中有方法,不代表是 Java 有多继承 看例程:理解接口方法里的 this 自引用 看例程:一个类不可以从两个接口中获得相同的缺省方法 看例程:接口中的静态方法 // >> TODO 有方法的接口,并不是多继承。接口不可以继承类,这一点就打破了 // >> TODO 同样,接口不可以声...
2020-03-12 11:57:39
146
原创 2.56.抽象类:有方法代码的接口
在 Java 8 中,接口中允许有缺省实现的抽象方法 看例程:不用抽象类,而是使用缺省方法的接口 // >> TODO 缺省的实现方法,用default修饰,可以有方法体 public interface ExpireDateMerchandise { // >> TODO 缺省的实现方法,用default修饰,可以有方法体 /** * 截止到当...
2020-03-12 11:52:06
147
原创 2.55.抽象类:接口和类的混合体
学习抽象类的定义和使用 学习抽象类的引用的使用 在 IDE 里看接口所有的实现类 public class UseAbsClass { public static void main(String[] args) { Date produceDate = new Date(); Date expireDate = new Date(produceDate...
2020-03-12 11:47:14
181
原创 2.54.接口:让商品类型更丰富
看例程:学习接口的定义 看例程:学习接口的实现和接口引用的使用 看例程:学习接口的继承 // >> TODO 接口的定义使用interface,而非class // >> TODO 接口中的方法,就是这个类型的规范,接口专注于规范,怎么实现这些规范,它不管 // >> TODO 接口无法被实例话,也就是不可以new一个接口的实例。 public interfac...
2020-03-12 11:36:36
377
原创 2.53.枚举 :定义商品的门类
看例程:使用枚举定义商品门类 看例程:枚举的使用 public class UseEnum { public static void main(String[] args) { // >> TODO 获取所有枚举,看看枚举实例有哪些方法 for (Category category : Category.values()) { ...
2020-03-12 11:29:57
257
原创 2.52.面向对象三要素:封装、继承和 多态
面向对象三要素:封装、继承和多态 封装解决了什么问题,带来了什么问题 继承解决了什么问题,带来了什么问题 多态解决了什么问题,带来了什么问题 ...
2020-03-12 11:26:46
132
原创 2.51.初探反射
使用反射 (reflection) 访问属性 使用反射访问方法 使用反射访问静态方法和属性 使用反射访问 private 的方法和属性 反射是什么 public class ReflectionAppMain { public static void main(String... args) throws NoSuchFieldException, IllegalAccessExcepti...
2020-03-12 11:19:32
218
原创 2.50.初探 Class 类
初探 Class 类 Class 类是代表类的类。每个Class类的实例,都代表了一个类 看例程:看看 Class 类里有什么 public class ClassOfClassAppMain { public static void main(String... args) throws NoSuchFieldException, NoSuchMethodException { ...
2020-03-12 11:16:34
136
原创 2.49.toString 方法
看例程:自动生成 toString 方法 看例程:调用 toString 方法的地方有很多 public class ToStringAppMain { public static void main(String[] args) { LittleSuperMarket superMarket = new LittleSuperMarket("大卖场", ...
2020-03-12 11:14:20
138
原创 2.48.hashCode 和 equals 方法
hashCode 和 equals 方法初探 hashCode 可以翻译为哈希码,或者散列码。应该是一个表示对象的特征值的 int 整数 equals 方法应该用来判断两个对象从逻辑上是否相等 看例程:hashCode 和 equals方法怎么写 看例程:使用equals 用来判断对象是否相等,而非 == String 类的 equals 方法 看例程:String 类的 equals 方法和 =...
2020-03-12 10:54:15
149
原创 2.47.万类之祖:Object 类
万类之祖:Object 类 所有的类,都间接或者直接的继承自 Object 类 Object 类中的方法 Object 类引用 public class TouchObject { public static void main(String[] args) { Object obj = new Object(); printObj(obj); ...
2020-03-12 10:49:59
162
原创 2.46.插曲:for 循环的另一种写法
看例程:学习 for 循环的另一种写法 public class LittleSuperMarketAppMain { public static void main(String[] args) { LittleSuperMarket superMarket = new LittleSuperMarket("大卖场", "世纪大道1号", 500,...
2020-03-12 10:36:30
165
原创 2.45.继承里的静态方法
l 看例程:继承里的静态方法 public class StaticMethodDoesNotBelieveOverride { public static void main(String[] args) { LittleSuperMarket superMarket = new LittleSuperMarket("大卖场", "世纪大道1号",...
2020-03-12 10:33:43
142
原创 2.44.final 修饰符
final 修饰符最见不得变化 final 修饰类:不可被继承 inal 修饰方法:不可被子类覆盖 final 修饰变量:不可被赋值。这个最难理解 public class MerchandiseTest { // TODO 之前重载的时候,参数是用的自定义类型。现在理解了父类和子类的引用赋值关系,重载又多了一层复杂性 public void testMerchandiseOv...
2020-03-12 10:21:16
124
原创 2.43.继承专属的访问控制:protected
继承专属的访问控制:protected 看例程:学习 protected 可见性 = default + 对子类可见 看例程:覆盖可以,但是不能让可见性更低 public class TestVizAppMain { public static void main(String[] args) { LittleSuperMarket superMarket = new Li...
2020-03-12 10:01:42
122
原创 2.42.instanceof 操作符
instanceof 操作符 看例程:学习 instanceof 操作符 public class InstanceOfTestAppMain { public static void main(String[] args) { int merchandiseCount = 600; LittleSuperMarket superMarket = new L...
2020-03-12 09:49:54
157
原创 2.41.多态里更多的语法点
多态里更多的语法点 静态多态:重载(Overload) 动态多态:覆盖(Override) 看例程:学习重载和覆盖的花式操作 勿忘初心:程序的执行就是找到要执行的代码,并且知道执行的代码能访问哪些数据,数据从哪里来。多态的核心问题就是:要调用哪个类的 哪个方法,这个方法用到的数据(this 引用)是谁 public class MerchandiseTest { // TODO 之前重载...
2020-03-12 09:44:45
156
原创 2.40.多态:到底调用的哪个方法?
多态:到底调用的哪个方法? 可以调用哪些方法,取决于引用类型。具体调用哪个方法,取决于实例所属的类是什么 看例程:学习覆盖的奥义 覆盖是多态里最重要的一种形式 从 this 自引用的角度,理解覆盖。 public class PolymorphismAppMainComplex { public static void main(String[] args) { Littl...
2020-03-12 09:34:41
886
原创 2.39.父类和子类的引用赋值关系
父类和子类的引用赋值关系 看例程:学习子类引用和父类引用的关系 父类引用可以指向子类对象,子类引用不可以指向父类的对象 可以进行强制类型转换,如果类型不对,会出错 可以调用的方法,是受引用类型决定的 public class LittleSuperMarketAppMain { public static void main(String[] args) { LittleS...
2020-03-12 09:27:10
209
原创 2.38.super :调用父类的构造方法
看例程:学习 super 的使用方法 public class UsePhoneExtendsMerchandise { public static void main(String[] args) { Phone ph = new Phone(); ph.describe(); // // Phone phone = new Phone( ...
2020-03-12 09:19:46
537
原创 2.37.super:和父类对象沟通的桥梁
super:和父类对象沟通的桥梁 子类对象里可以认为有一个特殊的父类的对象,这个父类对象和子类对象之间通过 super 关键字来沟通 看例程:学习 super 的用法 理解 super 是什么,不是什么 public class UsePhoneExtendsMerchandise { public static void main(String[] args) { Pho...
2020-03-11 17:54:53
142
原创 2.36.覆盖:子类想要一点不一样
覆盖:子类想要一点不一样 覆盖才是继承的精髓和终极奥义 看例程:学习覆盖 从覆盖的角度理解为什么使用方法读写属性,优于直接访问属性 问题:为了避免代码重复,在子类里使用父类的 buy 和 describe 方法。如何在子类里,调 用父类的方法? public class UsePhoneExtendsMerchandise { public static void main(String[...
2020-03-11 17:47:11
137
原创 2.35.子类对象里藏着一个父类对象
l 另一种解决问题的思路:组合 看例程:学习使用组合如何解决问题 l 继承和组合的区别 看例程:初步了解组合和继承的区别 public class UsePhoneExtendsMerchandise { public static void main(String[] args) { PhoneExtendsMerchandise phone = new PhoneEx...
2020-03-11 17:38:20
376
原创 2.34.继承:方便让商品增加新的类别
手机是商品,但不只是商品 手机类需要商品类所有的属性和方法,因为手机是商品,有价格,库存数量,进价售价等 但是手机也不只是商品,除了商品通用的属性和操作之外,手机还有自己这一类商品共有的属性,比如 CPU,内存,存储,品牌,操作系统,屏幕大小等描述信息 把商品类里的属性和方法都复制过来,然后再增加上手机自己的属性和方法。又是熟 悉的问题! 继承:问题迎刃而解 看例程:继承的语法和作用 • 子类继承...
2020-03-11 17:31:09
121
原创 2.33.String 类的好兄弟
StringBuilder 是一个非常方便的用来拼接和处理字符串的类,和 String 不同的是,它是可变的 看例程:学习 StringBuilder 的使用 public class LearnStringBuilder { public static void main(String[] args) { // TODO StringBuilder首先是可变的 ...
2020-03-11 17:22:30
128
原创 2.32.重新认识老朋友: main方法 和System 类
main 方法使用指南 main 方法也只是一个静态的,有 String[] 做参数的,没有返回值的方法而已。它的特殊性在于 Java 可以把 main 方作为程序入口 给 main 方法传递参数 自己试着调用 main 方法 System 类不简单 System 类中有很多和系统相关的方法。我们用的最多的就是 in 和 out 来读取和输出数据 看例程:System 里另一个最常用的,无可替代的...
2020-03-11 17:21:07
216
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅