Thinking In Java 4th Chap2 一切都是对象
对基本数据类型的初始化有二:
1.String s="asdf";
2.String s=new String("asdf");
可能的存储区域:
寄存器(不可如c/c++进行控制)
堆栈(对象引用,对象本身不在此处)
堆(对象存放地)
常量存储(代码内部/只读存储器)
非RAM存储(流对象/持久化对象)
基本类型:
基本类型 | 大小 | 最小值 | 最大值 | 包装器类型 | 默认值 |
boolean | -- | -- | -- | Boolean | false |
char | 16-bit | Unicode o | Unicode 2^16-1 | Character | null |
byte | 8 bits | -128 | +127 | Byte | (byte)0 |
short | 16 bits | -2^15 | +2^15-1 | Short | (short)0 |
int | 32 bits | -2^31 | +2^31-1 | Integer | 0 |
long | 64 bits | -2^63 | +2^63-1 | Long | 0L |
float | 32 bits | IEEE754 | IEEE754 | Float | 0.0f |
double | 64 bits | IEEE754 | IEEE754 | Double | 0.0d |
void | -- | -- | -- | Void |
高精度数字BigInteger和BigDecimal:(任意大小,任意精度,速度较慢)
1 //BigInteger: 2 3 import java.math.BigInteger; 4 //每一个数都是类中的一个对象: 5 6 BigInteger add1=new BigInteger("10"); 7 //所有计算必须调用方法: 8 add1.negate();//相反数 9 add1.add(new BigInteger("20"));//加法 10 add1.subtract(new BigInteger("20"));//减法 11 add1.multiply(new BigInteger("20"));//乘法 12 add1.divide(new BigInteger("20"));//除法 13 add1.remainder(new BigInteger("20"));//取模 14 BigInteger mod = new BigInteger ("10");//快速幂取模 15 BigInteger pow = new BigInteger ("20"); 16 System.out.println(pow.modPow(pow,mod)); 17 add1.compareTo(new BigInteger("18"));//比较大小,小于-1,大于1,等于0 18 add1.pow(10);//幂运算 19 add1.min(new BigInterger("-10"));//较小数 20 add1.max(new BigInteger("100"));//较大数 21 add1.gcd(new BigInteger("6"));//最大公约数 22 add1.and(new BigInteger("10"));//按位与 23 add1.or(new BigInteger("10"));//按位或 24 add1.xor(new BigInteger("10"));//异或 25 add1.toString(2));//进制转换,返回n进制字符串 26 add1.abs();//绝对值 27 add1.testBit(2);//检测某位上是否为1 28 add1.shiftLeft(1);//左移n位 29 add1.shiftRight(1);//右移n位 30 add1.not();// 非 31 int p=2; 32 BigInteger add1 =BigInteger.ValueOf(p);//int转化为BigInteger 33 int temp=add1.intValue();//BigInteger转化为int
Java自带的垃圾回收器能自动识别和销毁无用对象,故无需像c++一样手动delete,也没有内存泄漏的风险
类库名称原则:反转域名,如:net.mindview.utility.foibies
Java没有“向前引用”问题,即使调用的类在当前代码之后定义仍然可行
如果需要明确调用的是哪个包中的类:import java.util.ArrayList;
如果需要调用某个包中的一群类:import java.util.*;
static关键字
凡被static标识的变量,无论有多少对象,都仅共同占有一份存储空间:
static int i;
/********/
StaticTest st1.i=47;
StaticTest st2.i++;
//output: i=48
静态方法可以通过它的类直接调用:Incrementable.increment();
Javadoc:(只能注释public和protected成员,最后输出HTML文件)
/** 欲引入Javadoc的内容
*@see classname或@see fully-qualified-classname#methodname
*{@link package.class#member label}(与@see基本一致)
*{@docRoot}产生到文档根目录的相对路径
*{@inheritDoc}从当前类的直接基类继承相关文档
*@version version-information
*@author author-information
*@since 最早版本
*@param 方法中parameter-name discription
*@return 返回值
*@throws 异常类名
*@Deprecated 旧特性为新特性所取代
*///:~(源代码清单结束)