JAVA断言使用
摘要:转自http://www.blogjava.net/liulu/archive/2006/10/24/77005.html相信学过c,c++的朋友一定不会对断言感到陌生。下面介绍一下断言在JAVA中的使用,JAVA是从JDK1.4才开始支持断言的(添加了关键字assert),请注意老版的JRE不支持...
阅读全文
Java基础:异常的限制
摘要:1 package cn.tju.thinkinginjava.exception; 2 3 @SuppressWarnings("serial") 4 class BaseballException extends Exception {} 5 @SuppressWarnings("serial") 6 class Foul extends BaseballException {} 7 @SuppressWarnings("serial") 8 class Strike extends BaseballException {} 9
阅读全文
Java基础:小知识点
摘要:1.1 Integer i = 1;2 Integer a = Integer.valueOf(1);3 Utils.Sop(a==i);4 5 //true
阅读全文
Java基础:final关键字
摘要:final表示最终的,不可变的,可以用来修饰数据、方法和类。1、final数据final用来定义一个常量,表示其一旦被初始化后,其值将不能再被改变。final可以定义一个编译时常量final int const = 1;//编译时被初始化,此后不能被改变也可以定义一个运行时被初始化的常量final int const2 = new Random(20).newxtInt(10);还可以定义一个空白final(意为被声明为final但是为给定初值)。public class Final { final int j; public Final() { j=3; //...
阅读全文
Java基础:复用类
摘要:1、复用方式:组合、继承、代理组合是功能上的复用,继承是形式上的复用,代理位于二者之间。2、创建一个子类对象时,该对象包含了一个基类的子对象。这个子对象与用基类直接创建的对象是一样的。二者的区别在于:后者来自于外部,而子对象被包装在子类对象内部。3、基类的无参构造器可以隐式地自动被调用,有参构造器必须被显式地调用(通过super关键字)。子类构造器中调用基类构造器的语句须位于第一句。注意:如果已经定义了有参数的构造器,则编译器就不会再为该类自动生成一个无参构造器,除非主动为该类提供无参构造器,否则该类不会拥有无参构造器。4、注意重载(overload)与重写(override)重写只有在某方法
阅读全文
Java基础:访问权限控制
摘要:成员权限:public、protected、package、privatepublic:所有的类都可以使用该成员,子类拥有该成员protected:与该成员所在的类(记为类A)在同一个包中、虽然不在一个包中但是继承了类A的类都可以使用该成员,子类拥有该成员package:与该成员所在的类(记为类A)在同一个包中的类都可以使用该成员,如果子类与类A位于同一个包中,则子类拥有该成员,反之则不会拥有该成员private:只在所在的类中能够被直接使用,子类不会拥有该成员类权限:只有public和package(此处不涉及内部类)public:所有的其他类都可以访问该类package:同一个包中的类可以
阅读全文
Java基础:初始化与清理
摘要:1、构造器每个类都必须至少有一个构造器,如果没有显式的定义,编译器会自动为该类创建一个隐式的无参构造器(无参构造器也称为默认构造器)。构造器没有返回值,不会返回任何东西(返回值为空和没有返回值是两码事),但是下面的语句会让人疑惑:1 Object object = new Object();实际上是new表达式返回了新建对象的引用,构造器没有返回任何东西。2、方法的重载方法名、方法参数表(参数数量、参数类型、参数顺序)区分了两个的方法。改变参数顺序也可以实现方法重载,但是不推荐使用,因为不利于维护和使用。一般是利用参数数量、类型来实现方法重载。由于基本类型能从一个“较”小的类型自动提升到一个“
阅读全文
Java基础:操作符总结
摘要:1、算术操作符整数除法会直接去掉结果的小数位,而不是四舍五入地处理结果。1 int a=3, b;2 b = a/2;3 System.out.println(b);4 //the output is 1byte、char、short参加运算时会被提升为int。+=、-+、*=、/=在左操作数为byte、char、short类型时,运算前提升为int,赋值时则被截取。byte b = 20;//byte a = b + 2; //编译错误:Type mismatch: cannot convert from int to bytebyte a = (byte) (b + 2);Syste...
阅读全文
JAVA内存管理
摘要:转自http://liu1227787871.blog.163.com/blog/static/205363197201263103320466/首先我们要明白一点,我们所使用的变量就是一块一块的内存空间!!一、内存管理原理:在java中,有java程序、虚拟机、操作系统三个层次,其中java程序与虚拟机交互,而虚拟机与操作系统间交互!这就保证了java程序的平台无关性!下面我们从程序运行前,程序运行中、程序运行内存溢出三个阶段来说一下内存管理原理!1、程序运行前:JVM向操作系统请求一定的内存空间,称为初始内存空间!程序执行过程中所需的内存都是由java虚拟机从这片内存空间中划分的。2、程序
阅读全文
Java内存分配
摘要:在java中,有java程序、虚拟机、操作系统三个层次,其中java程序与虚拟机交互,而虚拟机与操作系统间交互。先看下Java运行中内存从获取到分配的大致流程,分为3步。程序运行前:JVM向操作系统请求一定的内存空间,称为初始内存空间!程序执行过程中所需的内存都是由java虚拟机从这片内存空间中划分的。程序运行中:java程序一直向java虚拟机申请内存,当程序所需要的内存空间超出初始内存空间时,java虚拟机会再次向操作系统申请更多的内存供程序使用。内存溢出:程序接着运行,当java虚拟机已申请的内存达到了规定的最大内存空间,但程序还需要更多的内存,这时会出现内存溢出的错误。Java 程序所
阅读全文
java继承过程中方法覆盖问题——“=”左右两边分别为父类和子类类型
摘要:1 package cn.tju.acculation.base; 2 3 public class Extend { 4 5 public static void main(String args[]) { 6 //在方法覆盖中,左右俩边分别为父类和子类的时候,以左边作为调用的入口,右边作为调用的实际调用执行的方法。 7 P t2= new T(); 8 //t2是Parent的对象,t2调用的方法只能是Parent的方法,但是实际调用是调用子类还是父类的方法,是看new谁,new谁就调用谁 9 //只有子类的对象...
阅读全文
java中的this和super关键字
摘要:1 package cn. tju. acculation. keywords; 2 3 4 public class ThisAndSuper { 5 6 public static void main( String[] args ) { 7 Student s1 = new Student( "zhangsan" , 14) ; 8 s1 .print (); 9 10 Student s2 = new Student( "lisi" , 12, "23" );11 ...
阅读全文
集合类根接口Collection及Iterator接口
摘要:以下是摘的一篇文章 很有收获。Java.util包中包含了一系列重要的集合类。本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕。下面我们先简单讨论一个根接口Collection,然后分析一个抽象类AbstractList和它的对应Iterator接口,并仔细研究迭代子模式的实现原理。本文讨论的源代码版本是JDK 1.4.2,因为JDK 1.5在java.util中使用了很多泛型代码,为了简化问题,所以我们还是讨论1.4版本的代码。集合类的根接口CollectionCollection接口是所有集合类的根类型。它的一个主要的接口方法是:1 boolean
阅读全文
浮点型数据的范围
摘要:1范围float和double的范围是由指数的位数来决定的。float的指数位有8位,而double的指数位有11位,分布如下:float:1bit(符号位)8bits(指数位)23bits(尾数位)double:1bit(符号位)11bits(指数位)52bits(尾数位)于是,float的指数范围为-127~+128,而double的指数范围为-1023~+1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。float的范围为-2^128 ~ +2^128,也即-3.40E
阅读全文