重在理解,而不是死记硬背。认真专心看6遍,做6遍。
学会码字,每天码字二小时。持之以恒。
任重道远,出发,走多少算多少。100分的试卷,会做20分也比一个努力也没有一个也不会好。机会只给有准备的人。
考研,人生应该有这么一段经历,实现自我价值,人生没有那条路好走,读书是最脚踏实地的路。上学。读书,求知。
断了后路,只有这一条路可以走。知之为知之,不知为不知。
xiang做事情和利索,值得学习。不拖泥带水。笃定,知道自己做什么。
赵丽颖,idom,从不抱怨,做这件事情就做好,付出了也有收获了,世界就是这样平衡的。樱桃。
20191004思考
(1)约束。投资自己,只有自己可以用知识让自己变得值钱,父母什么也给不了你。
(2)吾日三省其身。问自己为什么。我今天要完成什么任务?我今天做了什么?花了多少时间?
(3)别想着吃,找事情做,找比吃更有意义的事情做。知道自己代码目标读书健身。减肥90斤45㎏。读书考研究生考本校。本校很优秀。考六级考教师资格证。
(4)国庆假过半,我的任务还没有开始,那就开始,做30也比0好。入门的心。万事如爬山。不忘初心,方得始终。记住我为什么做这件事情的初心。
(5)把每一天当做上班前的最后一天或上学前的最后一天。
(6)今天的事情今天要做完。今天的任务责任。把每一场考试当做人生最重要的考试。把每一次作业当做最后一次作业最重要的作业。人生来时有使命的。
(7)女人细心细致精致,不能像大老爷们儿一样粗糙。精致。优雅。气质。10分钟,20分钟可以做成什么事情。定时定点做事情。有规划有效率,老师一节课要讲完什么知识。
(8)花了24800元培训,要有效果,不能敷衍,每一分钱都来之不易。对的起决定做的事情,决定攀登的大山,欲穷千里目,更上一层楼。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
章节:Ch01-集合框架和泛型
题目1)Java 集合框架是什么?说出一些集合框架的优点?
答:每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久,它还包括在Java并发包中,阻塞接口以及它们的实现。集合框架的部分优点如下:(1)使用核心集合类降低开发成本,而非实现我们自己的集合类。
(2)随着使用经过严格测试的集合框架类,代码质量会得到提高。
(3)通过使用jdk附带的集合类,可以降低代码维护成本。
(4)复用性和可操作性。
题目2)集合框架中的泛型有什么优点?
答:Java1.5引入了泛型,所有的集合接口和实现都大量地使用它。泛型允许我们为集合提供一个可以容纳的对象类型,因此,如果你添加其它类型的任何元素,它会在编译时报错,这避免了在运行时出现ClassCastException,因为你将会在编译时得到报错信息。泛型也使得代码整洁,我们不需要使用显式转换和instanceOf操作符。它也给运行时带来好处,因为不会产生类型检查的字节码指令。
题目 3) Java 集合框架的基础接口有哪些?
答:(1)Collection 为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java 平台不提供这个接口任何直接的实现。
(2)Set 是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。
(3)List 是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List更像长度动态变换的数组。
(4)Map 是一个将 key 映射到 value 的对象.一个 Map 不能包含重复的 key:每个 key最多只能映射一个 value。
(5)一些其它的接口有 Queue、Dequeue、SortedSet、SortedMap 和 ListIterator。
题目 4) 为何 Map 接口不继承 Collection 接口?
答:(1)尽管 Map 接口和它的实现也是集合框架的一部分,但 Map 不是集合,集合也不是Map。因此,Map 继承 Collection 毫无意义,反之亦然。
(2)如果 Map 继承 Collection 接口,那么元素去哪儿?Map 包含 key-value 对,它提供抽取 key 或 value 列表集合的方法,但是它不适合“一组对象”规范。
题目 5) Iterator 是什么?
答:Iterator 接口提供遍历任何 Collection 的接口。我们可以从一个 Collection 中使用迭代器方法来获取迭代器实例。迭代器取代了 Java 集合框架中的 Enumeration。迭代器允许调用者在迭代过程中移除元素。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
章节 Ch02 - 实用类介绍
题目 1) 如何将字符串转化成 int?
答:使用包装类 Integer。 Integer.valueOf("2");其他基本数据类型都是类似。
题目 2) 为什么在 Java 中存储密码要使用 char[],而不使用 String?
答:因为 String 是不可变的,当 String 创建之后,就不会再改变了。而 char[]是可变的,程
序员在用完之后可以将其改变,不会留下任何原始数据。所以,在使用密码时,一般都是会用
char 数组,例如 JavaSwing 中的 JPassWordField,获取密码框的值就是使用 char 数据。而
不使用 String。
题目 3) 如何将字符串转换成时间 Date?
答:使用 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date =sdf.parse("2017-12-10")。
题目 4) 字符串对象 String,StringBuilder ,StringBuffer 之间的区别?
答:String 不可变的,其余两个为可变的,也就是可以自由增加或者删除字符串。StringBuilder
和 StringBuffer,前者是线程不安全的,后者是线程安全的。理论上 StringBuilder 效率更高。
字符串大量拼接时,建议使用 StringBuilder ,StringBuffer。
题目 5) 计算一个字符串某个字符的出现次数?
答:(1)使用 charAt 方法截取之后,循环判断。
(2)使用 apache commons lang 包中的 StringUtils:
int n = StringUtils.countMatches("ababababab", "a");
System.out.println(n);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
章节 Ch03 - 输入和输出处理
题目 1)java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承,请说出他们分别
是哪些类?
答:(1)字节流,字符流。
(2)字节流继承于 InputStream OutputStream,
(3)字符流继承于 Reader Writer。在 java.io 包中还有许多其他的流,主要是为了提高性能和使用方便。
题目 2) 什么是 java 序列化,如何实现 java 序列化?
答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现 Serializable 接口,该接口没有需要实现的方法,
implements Serializable 只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,接着,使用
ObjectOutputStream 对象的 writeObject(Object obj)方法就可以将参数为 obj 的对象写出(即保存其状态),要恢复的话则用输入流。
题目 3) 使用处理流的优势有哪些?如何识别所使用的流是处理流还是节点流?
答:优势:对开发人员来说,使用处理流进行输入/输出操作更简单;使用处理流的执行效率更高。
判别:处理流的构造器的参数不是一个物理节点,而是已经存在的流。而节点流都是直接以物理 IO 及节点作为构造器参数的。
题目 4) 什么是标准的 I/O 流?
答:在 java 语言中,用 stdin 表示键盘,用 stdout 表示监视器。他们均被封装在 System 类的类变量 in 和 out 中,对应于系统调用 System.in 和 System.out。这样的两个流加上System.err 统称为标准流,它们是在 System 类中声明的 3 个类变量:
public static InputStream in;
public static PrintStream out;
public static PrintStream err;
题目 5) 什么能被序列化?什么不能被序列化?
答: 能被序列化:①属性(包括基本数据类型、数组、对其它对象的引用);②类名;
不能被序列化:①static 的属性;②方法;③加了 transient 修饰符的属性。
要想序列化对象,必须先创建一个 outputstream,然后把它嵌进 objectoutputstream。
这时就能用 writeobject()方法把对象写入 outputstream,。读的时候需要把 inputstream 嵌到 objectinputstream 中,然后在调用 readobject()方法。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
章节:Ch04-XML
题目1)XML 是什么?
答:XML是可扩展标记语言(Extensible Markup language),可以根据自己的需求扩展XML,XML中可以定义自定义标签。而在HTML等标记语言中必须使用预定义标签,而不能使用自定义标签。
题目2)DTD与XML Schema有何区别?
答:DTD与XML Schema的区别:DTD(Document Type definition)是文档类型描述是定义XML 文件结构的传统方式。DTD不使用XML编写,而XML Schema本身就是XML文件,这表示XML解析器等已有的XML工具可以用来处理XML Schema,并且XML Schema 是设计与DTD之后的,它提供了更多的类型来映射XML文件不同的数据类型。
题目3)XML CDATA 是什么?
答:CDATA是字符数据,它具有特殊的指令被XML解析器解析。XML解析器解析XML文档中所有的文本,比如This is name of person,标签的值也会被解析,因为标签值也可能包含XML标签,比如First Name。CDATA部分不会被XML解析器解析,CDATA部分以结束。
题目4)XSLT是什么?
答:XSLT也是常用的XML技术,用于将一个XML文件转换为另一种XML,HTML或者其他的格式。XSLT为转换XML文件详细定义了自己的语法,函数和操作符。通常由XSLT引擎完成转换,XSLT引擎读取XSLT语法编写的XML样式表或者XSL文件的指令。XSLT大量使用递归来执行转换,一个常见XSLT使用就是将XML文件中的数据作为HTML页面显示,XSLT也可以很方便地把一种XML文件转换为另一种XML文档。
题目5)DOM和SAX解析器有什么区别?
答:DOM和SAX解析器有什么区别?
答:DOM和SAX解析器主要区别在于它们解析XML文档的方式。使用DOM解析时,XML文档以树形结构的形式加载到内存中,而SAX是事件驱动的解析器。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
章节 Ch05 - Java 反射机制
题目 1) 反射获取字节码对象方式、创建对象的两种方式?
答:①获取字节码方式三种:
(1)类名.class,例如:System.class
(2)对象.getClass(),例如:new Date().getClass();
(3)Class.forName("类名"),例如:Class.forName("java.util.Date");
②创建对象的两种方式:
(1)直接用字节码创建对象,只能调用默认的构造方法:字节码.newInstance();
(2)获取构造方法 Constructor,然后调用构造方法创建,可以通过参数不同调用不同的构造方式。
题目 2) 怎么理解反射,反射的应用?
答:在运行状态下,通过类的字节码文件去解剖一个类,使用该类的构造方法、成员变量、成员函数。反射就是把 Java 类中的各种成分映射成相应的 Java 类。一般情况下我们要解决某个问题,先找到相关的类,创建该类的对象,然后通过该对象调用对应的方法来解决问题。反射是一个正好相反的过程, 开始可能并没有类可以解决这个问题, 而我们却先用一个当时可能并不存在的方法解决了这个问题,后来才有的这个类。这其实就是框架的原理,现有的框架再有的解决问题的类。框架描述了整体,制订了功能方法的规范,具体的实现之后按照这个规范编写。这些都需要靠反射来完成。使用框架有良好的扩展性, 某部分功能的优化不需要涉及程序整体, 只需要修改特定的部分就好了,然后通过配置文件,获取对应的类名,就可以了。
题目 3) 什么是 reflection?
答:Java 中的反射是一种强大的工具,它能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行链接。反射允许在编写与执行时,使程序代码能够接入装载到 JVM 中的类的内部信息,而不是源代码中选定的类协作的代码。这使反射成为构建灵活应用的主要工具。需要注意的是,如果使用不当,发射的成本会很高。
题目 4) 反射的原理是什么?
答:反射是为了能够动态的加载一个类,动态的调用一个方法,动态的访问一个属性等动态要求而设计的。它的出发点就在于 JVM 会为每个类创建一个 java.lang.Class 类的实例,通过该对象可以获取这个类的信息,然后通过使用java.lang.reflect包下得API以达到各种动态需求。
题目 5) Class 类的含义和作用是什么?
答:每一个 Class 类的对象就代表了一种被加载进入 JVM 的类,它代表了该类的一种信息映射。开发者可以通过3 种途径获取到 Class 对象。
①.Class 的 forName()方法的返回值就是 Class 类型,也就是动态导入类的 Class 对象的引用。public static Class<?> forName(String className) throws ClassNotFoundException
②.每个类都会有一个名称为 Class 的静态属性,通过它也是可以获取到 Class 对象的,示例代码如下:Class<Student> clazz = Student.class; // 访问 Student 类的 class 属性。
③.Object 类中有一个名为 getClass 的成员方法,它返回的是对象的运行时类的 Class 对象。因为 Object 类是所有类的父类,所以,所有的对象都可以使用该方法得到它运行时类的 Class对象,示例代码如下:Student stu = new Student();
Class<Student> clazz = stu.getClass(); // 调用 Student 对象 getName 方法
章节Ch06- 一维数组及经典应用
题目1)数组的概念:
答:数组是具有相同数据类型的数据集合。相同的数据类型是指 数组中每个数据都是同一类型数据,或属于基本数据类型中相同类型的数据,或属于对象类型中相同类型的数据。按照维度来划分,数组分为一维数组,二维数组和多维数组,每一维代表一个空间的数据。
题目2)数组在平时的程序代码中使用是否频繁?
答:不频繁,因为数组的缺点是一旦声明,就不能改变容量的大小。
题目3)实现数组排序和查询相应元素的索引方法是什么?
答:Arrays类的sort()方法实现排序功能。binarySearch()方法实现查找元素索引功能。
题目4)数组有没有length()方法?String有没有length()方法?
答:数组没有length()方法,有length属性。String有length()方法,在JavaScript中获取字符串。
题目5)手写冒泡排序法?
冒泡排序法:概念:冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
冒泡排序法代码实现:
public class BubbleSortTest {
public static void main(String[] args) {
int[] arr = new int[]{-12,3,2,34,5,8,1};
//冒泡排序
for(int i = 0;i < arr.length-1;i++){
for(int j = 0;j <arr.length-1-i;j++){
if(arr[j] >arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
//遍历
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]+" ");
}
}
}