龙潭书斋 -- 303




概述泛型是 java SE5 开始支持的特性,他可以指定一个“适用于很多类的类型”,也就是参数化类型,使程序可以应用于多种类型,这样泛化的思想为程序设计增添了更高的灵活性泛型最有用的地方就是创造容器类 泛型类和接口的最基本用法下面的例子展示了泛型的基本用法:package com.techlog.test; class Temp { } public class Test<T> { private T a; public Test(T a) { this.a = a; } public T getA() { return a; } public static void main(String[] argv) { Test<Integer> test = new Test<>(5); Test<Temp> tempTest = new Test<>(new Temp()); System.out.println(test.getA()); System.out.println(test.getClass() == tempTest.getClass());
#技术帖    #龙潭书斋    #容器    #java   
概述RTTI 即 Run-Time Type Identification,运行时类型检查,这个机制让你的程序中某个数据的类型信息直到运行时才被发现和使用java 提供了两大类 RTTI 机制,一种是“传统的”RTTI,他要求我们在编译时已知所有类型,另一种是反射机制,他允许我们在运行时才发现和使用类型信息 RTTI 与 Class 对象最基本的 RTTI 机制就是多态的实现,比如派生类与基类之间的转型和动态绑定那么,RTTI 是如何工作的呢?RTTI 是利用 Class 对象实现的,Class 对象就是用来创建所有常规对象的,他拥有对应类的大量相关信息,每当编译器加载一个类,就会产生一个 Class 对象,类加载器首先检查这个类的 Class 是否已经被加载,如果没有被加载,类加载器就会根据类名找到对应的 .class 文件,从而创建对应的 Class 对象 Class 对象也提供了很多方法供外部使用,如:static Class<?> forName(String className) th
#读书笔记    #技术帖    #龙潭书斋    #java   
概述字符串操作是计算机程序设计中最常见的行为java 提供了三种字符串操作类:String -- 最基本的不可变字符串类型StringBuilder -- 可变字符串类型StringBuffer -- 线程安全的可变字符串类型 不可变的 StringString 对象是不可变的,所有的修改 String 对象值的方法实际上都创建了新的 String 对象,而最初的 String 对象丝毫未动package cn.techlog.tesh; import java.util.HashMap; import java.util.Map; /** * Created by techlog on 2016/2/28. */ public class Test { public static String upcase(String s) { s = s + " world"; return s.toUpperCase(); } public static void main(String[] argv) {
#技术帖    #龙潭书斋    #string    #字符串   

200x200


概述基本的语法错误会在编译期被编译器报告出来,但是更多的情况是在运行时由于种种原因导致的异常情况很多情况下,发现异常情况者不知道该如何去解决这个异常情况,因此他需要抛出异常由其他部分去解决,java&

#技术帖    #龙潭书斋    #java    #exception   

200x200


概述上一篇日志中,我们介绍了 java 基本容器中的序列容器,他们都实现了 Collection 接口Collection 及其相关实现的容器简介及用法本篇日志

#技术帖    #数据结构    #龙潭书斋    #java   

200x200


概述大部分语言都提供了容器来解决实际编程中遇到的大量对象的管理功能,例如数组就是最基本的容器,但是数组的大小是固定的,一旦创建不能够再扩展容量,一般情况中,我们需要管理的对象集合大小往往是不固定的下图

#技术帖    #龙潭书斋    #list    #java   
概述一言以蔽之,内部类就是将一个类的定义放在另一个类的定义内部内部类在平常的编码过程中应用的场景并不多,本文主要来总结一下内部类的特性和用法 下面的例子展示了内部类组织代码和名字隐藏的功能:package com.techlog.test; /** * Created by techlog on 16/2/24. */ public class Parcel2 { private class Destination { private String label; Destination(String whereTo) { label = whereTo; } String readLabel() { return label; } } public Destination to(String s) { return new Destination(s); } public void ship(String dest) { Destination d = to(dest); System.out.println(d.readLabel()); }
#技术帖    #龙潭书斋    #class    #java   
概述面向对象的一个重要特征就是抽象,java 中提供了两种抽象的形式,分别是接口和抽象类,虽然他们有很多地方十分相似,但却有着更多的不同,有着各自独特的应用场景本文就着重介绍一下接口和抽象类 抽象类和抽象方法抽象方法abstract void func();  如上面所示,只有方法声明,没有方法体,并且在方法前添加 abstract 关键字则意味着将这个成员方法创建为抽象方法 抽象类包含抽象方法的类必须在 class 关键字前添加 abstract 关键字,声明他是一个抽象类 package com.techlog.test; /** * Created by techlog on 16/2/24. */ abstract public class FirstTest { abstract public void func(); } class BTest { public static void main(String[] argv) { FirstTest firstTest = new FirstTest() { @Override public void func()
#技术帖    #龙潭书斋    #class    #java   
概述final 是 java 的重要关键字之一,可以用来修饰类、方法和变量,主要用来表示“不可改变” final 类final 类不能被继承,同时,一旦用 final 修饰了类,也就意味着 final 类中的所有方法都被隐式地指定为 final 方法 final 方法在类继承的过程中,对于父类中的 final 方法,子类不能修改和覆盖private 方法都被隐式指定为 final 方法 有两个原因使用 final 方法:锁定方法,防止被子类修改其含义在早期的 java 实现版本中,final 方法被实现为内嵌调用,可以提升性能 final 变量final 关键字用来修饰变量是最常用的用法,如果修饰成员变量,则必须在定义时或者构造方法中初始化,且一经初始化此后不能再进行任何赋值针对基本类型和类对象有着不同的含义:对于基本类型,final 变量一经初始化,此后不能再改变该变量的值对于类对象,已经初始化后,不能让这个变量再指向另一个对象,但他指向的对象的内容是可以改变的 static 
#技术帖    #龙潭书斋    #类    #class   
Java 的主要类型Java 主要类型类型大小(bit)对应类类型boolean1Booleanchar16Characterbyte8Byteshort16Shortint32Integerlong64Longfloat32Floatdouble64Doublevoid·Void··BigInteger··BigDecimal··String BigInteger 和 BigDecimal 作为 java 提供的高精度类型,分别用来存储整型和浮点型数字,只要内存足够大,两个类型没有最大值的限制,在比值计算、财务管理等方面十分常用上表中并没有给出相应类型的变量创建后 JVM 所赋予的默认值,首先,局部变量并不会被初始化为默认值,而类成员变量虽然会被初始为默认的 0,但是实际的程序中并不应该依赖这样的初始化机制 名字可见性为了避免名字冲突,java 引入了包的概念,类放置在独一无二的包中,点分字符串的包名代表了目录结构,因此也就避免了同名包的产生,这样,即使是相同的类名,单在不同的包中也就意味着是不同的类了,从而避免了类名的冲突目前整个软件包都以小写字母为标准,当引用类外部的某个类时,需要 import 的相应的包名,或在使用类名时指定完整的包名
#读书笔记    #技术帖    #龙潭书斋    #java   



京ICP备15018585号