ThinkInJava_2_一切都是对象

第2章 一切都是对象

2.1 用引用操纵对象

创建一个引用

String s;

引用关联一个对象

String s = new String("aaa")

2.2 必须由你创建对象

Java对象引用存储在堆栈中,存取快,但是不灵活
Java对象存储在堆里,编译器不知道数据存活时间,所以有灵活性
基本类型的值,直接存储在堆栈里
boolean
char(2)
byte(1)
short(2)
int(4)
float(4)
long(8)
double(8)
void
基本类型具有包装器类,可以在堆中创建一个非基本对象

char c = 'x';
Character ch = new Character(c);
Character ch = new Character('x');
Character ch = 'x';
char c = ch;

高精度数字
BigInteger 整数
BigDecimal 定点数

Java中的数组确保会被初始化,且不能在它的范围之外被访问
创建数组对象实际上是创建了一个引用数组

2.3 永远不需要销毁对象

Java中基本类型的作用域只在花括号内
这种是不允许的

{
	int x;
	{
		int x = 96;
	}
}

Java对象可以存活于作用域之外

{
	String s = new String("a string");
}

s在作用域后就消失了,s指向的String对象仍继续占据内存空间

2.4 创建新的数据类型:类

class ATypeNmae {}
ATypeName a = new ATypeName();

字段

class DataOnly {
	int i;
	double d;
	boolean b;
}

字段赋值

data.i = 47;
data.d = 1.1;
data.b = false;

基本成员初始值

booleanfalse
char‘\uooo(null)’
byte(byte)o
shorto
into
longoL
floato.of
doubleo.od
int x;
//基本类型作为类的成员时,才给定默认值
//局部变量不赋初始值,编译器会报错

2.5 方法,参数和返回值

//名称,参数,返回值,方法体
ReturnType methodName(/* Argument list */) {
	/* Method body */
}

方法只能通过对象调用

objectName.methodName(arg1, arg2, arg3);
int x = a.f();
//返回值类型必须与x兼容
//调用方法的行为通常被称为发送消息给对象
参数列表传递的实际上是引用,传递引用的类型必须正确
int storage(String s) {
	return s.length() * 2;
}

2.6 构建一个Java程序

名字可见性
Java通过反转域名划分目录,定义类库,以解决模块重名问题

import java.util.ArrayList;
import java.util.*;
//import 来导入类库

static关键字

class StaticTest {
	static int i = 47;
}
StaticTest st1 = new  StaticTest();
StaticTest st1 = new  StaticTest();
//st1.i 和 st2.i 指向同一存储空间
StaticTest.i++;
//可以直接用类名引用静态成员
class Incrementable {
	static void increment() { StaticTest.i++; }
}
Incrementable sf = new Incrementable();
sf.increment();

第一个Java程序

import java.util.*;
public class HelloDate {
	public static void main(String[] args) {
		System.out.println("Hello, it's: ");
		System.out.println(new Date());
	}
}
// out 是PrintStream的一个静态对象
// public static void main(String[] args) {}

展示一些属性

public class ShowProperties {
	public static void main(String[] args) {
		System.getProperties().list(System.out);
		System.out.println(System.getProperty("user.name"));
		System.out.println(System.getProperty("java.libary.path"));
	}
}

– listing properties –
gopherProxySet=false
awt.toolkit=sun.lwawt.macosx.LWCToolkit
java.specification.version=10
file.encoding.pkg=sun.io
sun.cpu.isalist=
sun.jnu.encoding=UTF-8
java.class.path=.
java.vm.vendor=“Oracle Corporation”
sun.arch.data.model=64
java.vendor.url=http://java.oracle.com/
user.timezone=
os.name=Mac OS X
java.vm.specification.version=10
sun.java.launcher=SUN_STANDARD
user.country=CN
sun.boot.library.path=/Library/Java/JavaVirtualMachines/jdk…
sun.java.command=ShowProperties
jdk.debug=release
sun.cpu.endian=little
user.home=/Users/nihao
user.language=zh
java.specification.vendor=Oracle Corporation
java.version.date=2018-07-17
java.home=/Library/Java/JavaVirtualMachines/jdk…
file.separator=/
java.vm.compressedOopsMode=Zero based
line.separator=

java.specification.name=Java Platform API Specification
java.vm.specification.vendor=Oracle Corporation
java.awt.graphicsenv=sun.awt.CGraphicsEnvironment
user.script=Hans
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
java.runtime.version=10.0.2+13
user.name=nihao
path.separator=:
os.version=10.15.1
java.runtime.name=Java™ SE Runtime Environment
file.encoding=UTF-8
java.vm.name=Java HotSpot™ 64-Bit Server VM
java.vendor.version=18.3
java.vendor.url.bug=http://bugreport.java.com/bugreport/
java.io.tmpdir=/var/folders/zm/7dc03kv57hb4x6537cz9s…
java.version=10.0.2
user.dir=/Users/nihao/Documents/文稿/tijava/object
os.arch=x86_64
java.vm.specification.name=Java Virtual Machine Specification
java.awt.printerjob=sun.lwawt.macosx.CPrinterJob
sun.os.patch.level=unknown
java.library.path=/Users/nihao/Library/Java/Extensions:…
java.vendor=Oracle Corporation
java.vm.info=mixed mode
java.vm.version=10.0.2+13
sun.io.unicode.encoding=UnicodeBig
java.class.version=54.0
nihao
null

javadoc命令
/** 开始
*/ 结束

/** A class comment */
public class Documentation1 {
	/** A field comment */
	public int i;
	/** A method comment */
	public void f() {}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值