java编程思想 -- 9




概述编程中很大部分的问题只需要使用顺序编程来解决,然而,对于某些问题,需要并发的同时执行程序中多个部分则是十分方便且有必要的,尤其是在多处理器的环境中,多个部分的代码可以实际上同时执行可以极大地提高程序的执行速度,同时也可以提供更加易用的模型然而,当你企图使用并发执行任务进行编程,问题也会接踵而至,并发程序的同步问题,内存空间的共享问题等等,因此并发有时是危险的 多线程机制java 的并发是通过多线程机制实现的,每一个子任务都将有一个执行线程驱动,一个线程就是在进程中的单一顺序控制流 java.lang 包提供了三种实现多线程开发的工具:Callable 接口Runnable 接口Thread 类 他们的区别在于:Callable 任务执行后可以具有返回值,在任务执行过程中也可以抛出异常,而 Runnable 和 Thread 都不行运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果,而 Runable 和 Thread 都不行Thread 是通过实现 Runnable 接口实现的,因此可以认为&
#技术帖    #龙潭书斋    #线程    #thread   
概述泛型是 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   



京ICP备15018585号