ThinkingInJava
LostTown
学无止境,气有浩然!
展开
-
在命令行编译运行Java类
下载安装配置JDK然后配置环境变量,注意在CLASSPATH环境变量中加入“.;”,“.”的意思是搜索当前目录,然后配置JAVAHOME网上都有。 首先编译HelloWorld.java文件,注意完整路径包括包名。 运行时一般在src目录下运行,因为那是默认路径,如果自己给某个目录添加了buildpath,像下图中的thinkingInJava,也可以在这个目录下运行 然后就成功啦!...原创 2018-05-11 17:32:49 · 404 阅读 · 0 评论 -
Thinking In Java 学习笔记 12.通过异常处理错误
异常 ExceptionException是所有与编程有关的异常类的基类抛出异常,当前情况解决不了的问题,传给上一级标准异常类有默认构造器和接受String参数的构造器。异常类型根类是Throwable,通过throw抛出异常在方法内设置一个特殊的块用来捕获异常,即try块,使程序能继续运行异常处理程序 catch子句紧跟try,只有匹配的catch子句才会执行。终止模型,异常被抛出,程序终止...原创 2018-07-03 10:26:50 · 220 阅读 · 0 评论 -
java MD5文件校验工具类
package util;import java.io.*;import java.nio.*;import java.nio.channels.FileChannel;import java.security.*;public class MD5Util { protected static char[] hexDigits = { '0', '1', '2', '3', '4'...原创 2018-06-28 14:02:24 · 4286 阅读 · 0 评论 -
Thinking In Java 学习笔记 13.字符串 String
不可变String,String对象有只读特性。当需要改变String的内容时,String类的方法都会返回一个新的String对象,而原来的String没有改变。javap 反编译使用循环构建String时,最好自己调用StringBuilder,避免创建多个StringBuilder。格式化输出 printf() 和format()例如 System.out.printf() Sys...原创 2018-07-04 09:47:43 · 163 阅读 · 0 评论 -
Thinking In Java 学习笔记 14.类型信息
RTTI 运行时类型信息使得你可以在程序运行时发现和使用类型信息。多态,通过动态绑定,非让代码只操纵对基类的引用(面向对象编程的基本特性)传统的类型转换代表对象类型的Class对象关键字instanceof每个类都有一个class对象,所有类都是在对其第一次使用时,动态加载到JVM(中的类加载器)中的Class.forName("class1"),获得对class对象的引用如果已经有了一个该类型...原创 2018-07-04 09:48:23 · 168 阅读 · 0 评论 -
Thinking In Java 学习笔记 15.泛型
泛型的主要目的之一就是指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性。class Class1<T>{} T为类型参数当创建改类型对象时必须指定具体类型 Class1<Integer> c1 = new Class1<Integer>(new Integer(0));元组 tuple:它是将一组对象直接打包存储于其中的一个单个对象。这...原创 2018-07-04 09:48:52 · 201 阅读 · 0 评论 -
Thinking In Java 学习笔记 16.数组
数组是一种效率最高的存储和随机访问对象引用序列的方式。数组标识符只是一个引用。可以返回一个数组数组存储在Java堆的连续内存空间,所以如果你创建一个大的索引,你可以有足够的堆空间直到抛出OutofmemoryError,因为请求的内存大小在连续的内存空间不可用数组与泛型 不能实例化具有参数化类型的数组public T[] f() {} 可以参数化数组本身的类型List<String&g...原创 2018-07-04 09:49:30 · 177 阅读 · 0 评论 -
Thinking In Java 学习笔记 17.容器深入研究
使用Abstract类创建只读的List可以通过Collection执行的操作List 方法 add() addAll() contains() get() remove() indexOf() size()SetSortedSet 按对象的比较函数对元素排序队列Queue,两种实现LinkedList和PriorityQueue 一般队列,先进先出PriorityQueu...原创 2018-07-04 09:56:21 · 205 阅读 · 0 评论 -
Thinking In Java 学习笔记 18. Java IO系统
输入和输出,输入输出流,Reader和Writer——字符流 InputStream和OutputStream——字节流I/O流的典型使用方式缓冲输入文件从内存输入格式化的内存输入标准I/O System.in System.out System.errSystem.out和System.err被包装成PrintStream,System.in需要包装 源码 重定向 setIn(Inp...原创 2018-07-04 10:01:13 · 162 阅读 · 0 评论 -
Thinking In Java 学习笔记 19.枚举类型 20.注解
values()方法用于遍历enum实例将静态导入用于enum,static import 在enum中自定义方法,需要在实例序列最后加分号覆盖enum方法switch语句中的enum对于enum而言,实现接口是使其子类化的唯一方法使用static import可以简化enum常量的使用EnumMap key来自一个enum,EnumMap内部可以由数组实现EnumMap可以实现多路分发定义常...原创 2018-07-04 10:11:22 · 201 阅读 · 0 评论 -
Thinking In Java 学习笔记 11.持有对象
泛型,向上转型适用于泛型数组,将数字与对象联系起来,容量不可改变Java容器类Collection,一个独立元素的排列List 按插入顺序保存元素,建立数字索引与对象的关联,能自动扩容Set 元素不可重复,HashSet用于快速访问,TreeSet键有序Queue 按照排队规则来确定对象产生的顺序,(通常与插入顺序相同)Map,一组成对的“键值对”对象,使用键来查找值映射表允许使用一个对象查找某...原创 2018-07-03 10:25:34 · 152 阅读 · 0 评论 -
Thinking In Java 学习笔记 10.内部类
内部类 innerClass:将一个类的定义置于另一个类内部外部类 enclosingClass 内部类是一种名字隐藏和组织代码的形式,当生成一个内部类对象时,此对象与制造它的外围对象之间就有了一种联系(内部类非static才能产生联系)。所以它能访问其外围对象的所有成员,内部类还拥有其外围类的所有元素的访问权。 没有外部类对象,无法创建非静态内部类对象,因为内部类对象会暗暗地连接到创建它...原创 2018-07-03 10:23:21 · 195 阅读 · 0 评论 -
Thinking In Java 学习笔记 9.接口
接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法。抽象方法仅有声明而没有方法体。abstract void f();包含抽象方法的类叫抽象类。如果一个类包含一个或多个抽象方法,则这个类必须是抽象类。从一个抽象类继承,必须定义所有抽象方法,或者子类也是抽象类,定义部分接口定义时,前面加上Iinterface接口,接口的方法自动就是public的(虽然可以不写public),方法的实现必...原创 2018-07-03 10:22:54 · 182 阅读 · 0 评论 -
eclipse在命令行输入参数
最近在看 Thinking In Java ,书中有些地方需要在命令行中输入参数,而我喜欢用IDE运行程序,那么在eclipse中如何输入这些参数呢? 这时我就看到了run configurations运行配置。 run as——> run configurations 然后如下图所示,输入需要的参数再run就OK啦!...原创 2018-05-13 21:30:38 · 8242 阅读 · 0 评论 -
Java堆和栈、存储方式、JVM中的堆和栈
堆主要用来存放对象的,栈主要是用来执行程序的Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中...原创 2018-05-14 16:05:40 · 480 阅读 · 0 评论 -
Thinking In Java 学习笔记 1.对象导论
万物皆对象对象:数据、方法类和接口public protected private default继承 ,复用子类包含父类成员(private除外),复制了父类的接口 is-a扩展接口,增加功能 is-like-a句柄 handle 即 引用 preference句柄的本质:一个唯一的整数,作为对象的身份id,区分不同的对象,和同类中的不同实例。程序可以通过句柄访问对象的部分信息。句柄...原创 2018-07-03 10:17:19 · 197 阅读 · 0 评论 -
Thinking In Java 学习笔记 2.一切都是对象
用引用操作对象引用 reference String s;创建一个引用时,无论如何都进行初始化: String s = "asd";用new关键字创建一个新对象连接 String S = new String("ad");保存数据:寄存器,最快,它在处理器内部堆栈Stack, 在RAM区域,堆栈指针上移创建,下移释放。句柄存放在此堆Heap,在RAM区域,保存Java对象,灵活 St...原创 2018-07-03 10:18:44 · 139 阅读 · 0 评论 -
Thinking In Java 学习笔记 3.操作符 4.控制执行流程
Number n1 = new Number();Number n2 = new Number();n1.i = 9;n2.i = 47;n1 = n2; //最初的n1句柄已经丢失,现在的n1是一个别名自增,自减前递增”表示++运算符位于变量或表达式的前面;而“后递增”表示++运算符位于变量或表达式的后面。对于前递增和前递减(如++A或--A),会先执行运算,再生成值。而对于后递增和后递减(...原创 2018-07-03 10:20:13 · 103 阅读 · 0 评论 -
Thinking In Java 学习笔记 5.初始化和清理
构造器 构造方法 与类同名 没有返回值 自动初始化可以有多个,带不同类型的参数,没有写构造方法时会有默认构造方法,它没有参数,默认构造器是default的。需要在包外返回某个类对象时需要重写构造器。overloading 方法重载 方法名相同,参数类型顺序不同向下转型需要强制类型转换,向上转型自动转换this this 关键字只能用于那些特殊的类——需明确使用当前对...原创 2018-07-03 10:20:49 · 145 阅读 · 0 评论 -
Thinking In Java 学习笔记 6.访问控制权限
public 所有类都可以访问protected 子类和同一个包内的类可以访问包访问权限 同一个包内的类可以访问private 自己可以访问默认包为该目录下所有其他文件提供包访问权限import 与 package...原创 2018-07-04 09:50:00 · 117 阅读 · 0 评论 -
Thinking In Java 学习笔记 7.复用类
代码复用: 组合、继承 、(代理)组合:将对象引用置入新类中。has-a组合一般是将现有类型作为新类型底层实现的一部分来加以复用继承:子类继承父类的实例和方法 is-a继承复用的是接口this1、直接引用,指向当前对象本身2、形参与成员名字重名,用this来区分3、调用本类另一种形式的构造函数(应该为构造函数中的第一条语句)super1、指向当前对象的父类,就可以用this.xxx来引用父类成员...原创 2018-07-03 10:21:45 · 131 阅读 · 0 评论 -
Thinking In Java 学习笔记 8.多态
多态(动态绑定/后期绑定/运行时绑定)通过分离做什么和怎么做,从另一角度将接口与实现分离。 默认前期绑定绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。前期绑定:在程序执行前方法已经被绑定,此时由编译器或其它连接程序实现。后期绑定,是指在运行时根据对象的类型进行绑定,又叫动态绑定或运行时绑定。实现后期绑定,需要某种机制支持,以便在运行时能判断对象的类型,调用开销比前期绑定大。Java...原创 2018-07-03 10:22:11 · 128 阅读 · 0 评论 -
Thinking In Java 学习笔记 21.并发
线程优先级 进程与线程后台(daemon)线程main()是非后台线程在每个线程对象上附着一个异常处理器捕获异常Thread.UncaughtExceptionHandler共享资源竞争互斥量 mutexvolatile关键字保证域可见性,当类中只有一个可变的域时,volatile是安全的使用synchronized关键字使用显示的Lock对象原子性与易变性临界区:...原创 2018-07-04 10:14:14 · 348 阅读 · 0 评论