java基础知识
jason_pot
这个作者很懒,什么都没留下…
展开
-
再读thinking in java -- 第十五章 泛型(三)
一个类不能实现同一个泛型的两种接口,因为存在擦除。使用带泛型参数的转型或instanceof不会有任何效果。402页的代码中,T被擦除到它的第一个边界,默认情况下是Object,因此pop()方法实际上是将Object转型为Object。这里转型其实只是为了符合返回类型T的要求。对于转型其实无效。即使将返回类型改写为Object,最后得到的返回类型也是String。自己后面补充了代码:public...原创 2018-03-27 20:55:32 · 138 阅读 · 0 评论 -
再读thinking in java -- 第十五章 泛型(二)
泛型变量的使用时在编译之前检查的。ArrayList<String> array1 = new ArrayList();ArrayList array2 = new ArrayList<String>();前者和泛型一致,后者无泛型作用。new ArrayList()只是在内存中开辟了空间。可以存储任意对象。而设计类型检查的是它的引用,因为array2中没用使用泛型引用,所...原创 2018-03-27 20:54:27 · 122 阅读 · 0 评论 -
再读thinking in java -- 第十五章 泛型(一)
题外话:终于到了泛型这一章,这一章真是看的我头皮发麻,神志不清。很多自己得出的结论在几页之后就完全推翻了。这里写的总结不一定对,很多只是看了别人的博客以及自己推测的结果,而且文中会有部分东西连我自己也没理清楚。看到一半我就去打游戏了,真的废。将一组对象直接打包存储于其中一个单一对象,这样的对象叫做元组。允许读取其中元素,不允许存放新的对象。元组可以具有任意长度,且其中的对象可以是任意不同的类型。在...原创 2018-03-27 19:36:36 · 175 阅读 · 0 评论 -
再读thinking in java -- 第十二章 通过异常处理错误
异常情况就是指阻止当前方法或作用域继续执行的问题。异常的一般顺序:1、抛出异常;2、创建异常;3、当前执行路径停止,抛出异常对象的引用;4、执行异常处理程序标准异常类都有两个构造器:默认构造器和接收字符串的构造器异常处理模型理论上有两种:终止模型和恢复模型。实际上都用终止模型自定义异常类需从已有的异常类继承。对异常类而言最重要的部分是类名。Exception继承自Throwable类。当异常类写了...原创 2018-03-21 10:29:48 · 181 阅读 · 0 评论 -
再读thinking in java -- 第十七章 容器深入研究(二)
Map中任何键必须有个equals方法,保证键的唯一性。若键被用于HashMap,则必须实现HashCode方法。用于TreeMap必须实现Comparable。LinkedHashMap散列化所有元素,但遍历时,返回插入顺序。反射实例:利用类型标签Class<t>,type(type是Class对象),type.getConstructor(Class对象),再用得到的对象.newI...原创 2018-03-30 16:37:06 · 114 阅读 · 0 评论 -
再读thinking in java -- 第十七章 容器深入研究(一)
填充容器可通过Collections.nCopies()和Collection.fill(),都采用单对象。fill()只能替换已有元素,不能添加新元素,可用Generator解决(利用泛型)。addAll方法是所有Collection子类的一部分。LinkedHashSet维护的是保持了插入顺序的列表。用Generator填充,即覆盖了next()调用iterator()一般返回一个匿名类的It...原创 2018-03-30 11:36:01 · 146 阅读 · 0 评论 -
再读thinking in java 第十一章 持有对象
这一章讲了很多api,没仔细看,有些东西也没看到位,难受。通过使用泛型,看可以在编译期防止将错误类型的对象放到容器中。toString方法默认打印类名加上对象散列码。容器可分为:1、Collection:独立元素的序列。List按插入顺序保存元素,Set不能有重复元素,Queue按规则确定对象产生顺序; 2、Map:一组成对的“键值对”对象若用Array.asList(数组)产生的list对...原创 2018-03-20 11:01:39 · 146 阅读 · 0 评论 -
再读thinking in java -- 第十章 内部类
直接创建外部类不会创建出内部类。内部类对象内访问外围类对象的所有成员,而不需要任何特殊条件,还拥有外围类的所有元素的访问权。在内部类若要生成对外围类对象的引用,可使用外围类的名字后紧跟 .this。创建内部类对象的操作:1、外部类函数返回; 2、外部类对象.new 内部类类名若内部类非static,则在拥有外部类对象之前,不可能创建内部类对象在方法作用域内创建一个完整的类叫做局部内部类。在方...原创 2018-03-20 09:56:57 · 107 阅读 · 0 评论 -
再读thinking in java -- 第十四章 类型信息
RTTI表示运行时识别一个 对象的类别。从容器中去除,元素会自动从Object转换到容器参数类型(运行时转变)。对于具体的类型可以用多态来实现。Class对象(包含了与类有关的信息)表示了类型信息在运行时的内容。每编写并编译一个心累就会产生一个Class对象(被保存到.class文件中)。生成Class对象需要JVM调用称为类加载器的子系统(包含一条类加载链)。所有的类都在第一次使用时,动态加载到...原创 2018-03-23 10:41:02 · 179 阅读 · 0 评论 -
再读thinking in java -- 第十三章 字符串
String对象是不可变的。每个看起来修改String值的方法实际上都创建了一个全新的String对象。String对象具有只读性,所以指向它的任何引用都不可能改变它的值。若要在toString方法中使用循环,最好自己创建一个StringBuilder对象,用它来构造最终结果。用String的话会不停创建StringBuilder,所以效率低下。若想打印对象地址,可在toString方法中添加su...原创 2018-03-23 10:09:45 · 154 阅读 · 0 评论 -
再读thinking in java -- 第八章 多态 & 第九章 接口
第八章 多态:多态的作用是消除类型之间的耦合关系。将一个方法调用同一个方法主体关联起来被称作绑定。若在程序执行前进行绑定叫前期绑定。解决前期绑定的问题(对于不同子类相同方法调用产生的疑惑)是通过后期绑定(运行时,根据对象的类型进行绑定)实现的。也被称作动态绑定或者运行时绑定。java除了static和final方法外,都是后期绑定的。只有非private方法才能被覆盖。private方法被自动认定...原创 2018-03-19 10:34:08 · 109 阅读 · 0 评论 -
再读thinking in java -- 第七章 复用类
每个非基本类型对象都有一个toString方法。创建一个类总是在继承(要么继承其他类,要么继承object)每个类都可以拥有一个main方法用于测试。java用super关键字表示父类。调用父类方法:super.function();当创建一个导出类对象时,该对象包含了一个基类的子对象。该子对象被包装在导出类对象内部。基类在导出类构造器访问它之前就完成初始化。没有默认构造器或者想用一个带参的基类构...原创 2018-03-16 20:48:41 · 182 阅读 · 0 评论 -
再读thinking in java -- 第六章 访问权限
第六章 访问权限访问权限从最大到最小:public、protected、包访问权限、private编译单元即java源代码,是 .java文件,最多只能有一个public类,可能没有public类。类名同文件名同名。编译一个.java文件,会输出文件中每个类名同名的.class文件。类库是一组类文件。每个文件都有一个public类以及任意个非public类。每个文件都有一个构件,若希望这些构件从属...原创 2018-03-16 20:08:47 · 139 阅读 · 0 评论 -
再读thinking in java -- 第五章 初始化与清理
当类中有多个构造器,在其中一个构造器内可用this()调用其他的构造器,但是只能调用一个,且要放到构造器内部开始处。除构造器外,编译器禁止其他方法调用构造器(new除外)static方法就是没有this的方法。static方法内部不能调用非静态方法(反过来可以)。垃圾回收器只能释放经由new分配的内存。对于非new出来的对象获得的“特殊”内存区域它不知道如何释放。为解决这种情况,java允许类中定...原创 2018-03-15 19:42:05 · 183 阅读 · 0 评论 -
再读thinking in Java -- 第三章 操作符 &amp; 第四章 控制执行流程
第三章 操作符在最底层,Java数据通过使用操作符来操作基本类型存储实际的数值,而非引用,所以赋值后变量修改不影响原值。e.g. int a = b; 改变a不影响b的值的大小。但如果目标是对象的话将会有影响(别名现象)移位操作符只可用来处理整数类型。左移:低位补零; 有符号右移:若为正,左补零;若为负,左补一; 无符号右移:>>>右移高位插0三元操作符:boole...原创 2018-03-15 00:40:15 · 102 阅读 · 0 评论 -
再读thinking in java -- 第二章 一切都是对象
5个存储数据的区域:1、寄存器:最快的存储区。位于处理器内部,数量有限,按需分配,不能直接控制2、堆栈:位于通用RAM(随机访问存储器),通过堆栈指针访问。对战指针下移,分配新的内存;上移,释放内存。创建程序时,需知道存储在堆栈区所有项的生命周期。引用存放在堆栈区。3、堆:一种通用的内存(位于RAM区),存放对象,不需知道数据在堆中的存活时间。4、常量存储:放在程序代码内部,可放在rom。5、非R...原创 2018-03-14 20:09:27 · 112 阅读 · 0 评论 -
再读thinking in java -- 第十六章 数组
数组实在编译期检查,来防止插入错误类型和抽取不当的类型。不能实例化具有参数化类型的数组:eg Peel<Banana>[] peels = new Peel<Banana>[10];//不合法但却可以创建该类型的数组引用。java有两种方法提供比较功能: 1、实现Comparator接口的compare() 方法; 2、实现Comparable接口的compar...原创 2018-03-27 23:26:43 · 137 阅读 · 0 评论