- 写出一个 && || 的使用场景(需求)并写出对应的代码;
- 逻辑与逻辑或 : 主要用于组合条件判断
- 特点:
- 运算符两边类型都为boolean类型
- 运算符运算结果也为boolean类型
- 具有短路行为
- &&
- 两边结果为true 结果为true
- 如果前面为false 后边不会运算
- ||
- 只要有一边的结果为true 结果为true
- 如果前面为true 后面不会运算
- 判断3 是否小于5 并且 大于1;
- 3<5 && 3> 1
- 判断3 是否大于5 或者小于 1
- 3>5|| 3<1>
- 写出switch的语法和使用场景
- switch条件选择 语法结构
swtich(值/变量/表达式){//java规定的类型: 枚举
case 值 : 功能语句; break;
...........
default 功能语句 ;break;
}
- for循环的语法结构和执行流程
for(初始A;条件判断B;循环后操作C){
//循环体C
}
初始化语句会执行一次;只会执行一次
整个for循环结构中的 A 只会执行一次
循环第一次:AàB(true)àDàC
第二次: B(true)àDàC
第三次: B(true)àDàC
…
第n次: B(false) 结束整个循环
- 使用循环遍历打印一个数组和集合(数组和集合自己定义)
- 数组
- int[] arr = {1,2,3,4,45,5,6,7,7}
- 数组
for(int i = 0;i<=arr.length-1;i++){
Sytem.out.println(arr[i]);
}
-
- 集合
- ArrayList list = new ArrayList();
- 集合
Collections.addAll(list,1,2,3,4,5,6,7,8,10);
for(int i = 0;i < list.size();i++){
System.out.println(list.get(i));
}
- 说说你认为的方法覆写和方法重载的区别(请注意不要只在乎语法细节而是要多考虑他们存在的意义)
- 方法覆写:
父类方法不满足子类需求的时候,需要覆写 可以通过@Override 验证是否是覆写
方法覆写的细节;
- 子类覆写方法权限不能低于父类
- 方法签名必须一致
- 返回值类型,必须与父类相同或者为父类返回值类型的子类类型
- 方法重载:
在同一个类中,方法名字相同参数列表不同,方法名命名见名知意思:为了方便记忆
- Object类中有那些方法可以被覆写有什么意义
- finalize():垃圾回收机制回收对象的时候会主动调用的方法
- toString();打印对象的字符串描述,静态属性
- equals();比较对象
- hashCode + equals 验证对象放入HashSet集合中,判断元素是否重复
- 谈谈方法的值传递和值引用有什么区别
方法参数传递
基本数据类型 : 传递的是值的本身
引用数据类型 : 传递的是对值的引用
- 谈谈对于this关键字的理解
- 概念:this 指代当前对象
- 判断this指代的是谁
官方 : this所在的函数正在被谁调用,this就指代谁
民间 : this当前哪个对象持有this就指代谁
- 特点:this不能写在静态方法中,this是对象级别的
- this的作用:
- 区分局部变量与字段之间的二义性
- this作为参数传递
- this作为返回值
- this调用其他的普通方法
- this在构造方法的第一句调用其他的构造方法
- super的作用有哪些
- 概念 : super在子类中表示父类的对象
- super的作用
区分子类父类字段的二义性
super调用父类的非私有的字段及方法
super在子类构造方法的第一句调用父类的构造方法
- 特殊用途及分析
用途
在子类的构造方法中,如果没有显示的写出对于父类构造方法的调用,那么会隐式 的调用父类的,无参数的构造方法
分析
- 为什么javaBean必须提供一个无参数的构造方法 :
特殊用途已做解释
2.图例解释:为什么可以用到父类的私有的字段:
通过getset方法存值取值因为子类的构造方法第一句,一定会用到父类的构造方法,意味着象this,将父类的对象与 子类构造方法,创建的对象,打包在了一起
- 继承:为什么能够继承到父类的东西因为:
子类构造方法,一定会用到父类的构造方法!
- 谈谈对static关键字的理解
- 概念 : static关键字,静态的修饰符:类级别的修饰符
- static修饰的了内容
字段:该字段被该类的所有对象共享
普通方法:工具方法,通过类名.方法名使用
- static 静态加载:会在加载的时候初始化执行代码
- static类级别的修饰符理解
- static修饰的字段:应该通过类名.字段名访问
- static修饰的字段:应该通过类名.方法,该字段被该类的所有对象共享
- 对象级别
- 非static修饰的字段:对象名.字段名
- 非static修饰的字段及方法,当创建对象时候,独属于每每一个对象,每有被该类的所有对象共享
- 静态上下文不予许访问非静态的变量及方法
- 非静态上下文,是否可以访问静态上下文: 可以
- 谈谈你对面向对象编程的认识理解
- 面向对象编程中有两个非常重要的概念类和对象
- 类 : 描述不具体的事物,抽象的不具体的
- 对象:描述的是一个具体的事物
- Java设计希望在计算机系统体现现实生活中,具体的个体及对象与对象之间的关系, 从而构建计算机系统
- 对于事物的考虑: 特点: 静态属性 动态行为
- Java语言中设计了类描述类这一类事物,字段描述静态属性,普通方法描述动态行为
- 通过类:即可创建一个对象
- 核心 : Java代码中体现使用对象,及对象与对象之间如何构建关系
- 除了基本的面向对象的编程思想: 对于面向对象的语法也应该有一定的认识,例如 三大特等[封装继承多态],匿名对象,构造方法,关键字static final this super.枚举,接口, 单利模式 ,抽象,多态!都要掌握
- Java代码中的创建的对象,该对象必然具有默认类型,而本身也是一个数据,因而,既 要看到对象的使用,也要直到本质对于数据的处理
- 列出你学过的(还记得的所有)Java中的类
Arrays GUI组件类 包装类八个,System Runtime Math BigInteger BigDecimal Random ThreadLocalRandom UUID Java.util.Date DateFormat SimpleDateFormat String StringBuffer StringBuilder 异常体系中的类 Thread Runnable List - ArrayList LinkedList Set-HashSet TreeSet Map HashMap TreeMap HashTable Properties Collections IO流中的类 网络编程中的类
- List/Set/Map的区别,并分别说一个具体的示例要用到List/Set/Map的情况
- List 接口:有序重复,属于Collection体系,实现了Iterable可以使用迭代器遍历
- ArrayList集合 java中用于存储数据,内部实现基于数组:查找,修改比较快
- LinkedList集合 java中用于存储数据,内部基于变量的链表结构实现:添加删除比较快
- Set 接口:无序[不保证添加顺序与迭代顺序一致] 不重复
- Map:接口:键值对:不属于Collection体系,没有实现Iterable 不能使用迭代器
- 写出判断一个字符串是否是一个合法的手机号码的代码
String regex = “1[0-9]{}”;
“15982889886”.matches(regex);
- Map的遍历方式及实现原理
keySet
EntrySet
内部实现原理:
基于Hash表[就是一个数组],及链表接口,在Java8以后采用红黑树的方式,存储数据
- 谈谈你对抽象类与接口的理解
- 抽象概念:模板类
- abstract修饰的类就是抽象类:特点,不能创建对象
- abstract修饰的方法就是抽方法:特点没有方法体
- 作用:模板类,基类根类,主要目的提取公共属性,让其他类来继承
- 支持多态[注意编译时和运行的过程]
- 接口interface 修饰的一个就是接口,编译生成独立的字节码文件
- 作用规范定义类的标准
- 内部可以有常量字段及抽象方法
- 一个类可以实现多个接口
- 接口与接口之间支持继承,及多继承
- 支持多态写法[注意编译时和运行的过程]