《Head First Java》03_primitive主数据类型和引用

变量分为primitive主数据类型和引用

声明变量

  • 必须声明所有变量的类型
  • primitive主数据类型用来保存基本类型的值,包括整数、布尔和浮点数等
  • 对象引用保存的是对象的引用
  • variables must have a type, variables must have a name.
  • 类型在前,名称在后 int count;

primitive主数据类型(也叫基本数据类型)的大小

类型位数值域
boolean由JVM决定true / false
char16 bits0 ~ 65535
byte8 bits-128 ~ 127
short16 bits-32768 ~ 32767
int32 bits-2147483648 ~ 2147483647
long64 bits-很大 ~ +很大
float32 bits范围规模可变
double64 bits范围规模可变
基本数据类型 类型所占大小 及其取值范围

溢位:某个类型不足以装下某个具体值,会丢失精度

变量的命名规则

  • 能包含字母、数字、下划线
  • 但是字母不能在开头

关键字 key words

对象类型的引用

《Head First Java》02_类与对象

面向对象具有较强的适应性可拓展性

面向对象的继承Inheritance

  • 找出相同类的共同部分
  • 将共同部分提取成新的类
  • 将旧类以继承关系连接到新类
  • 子类可以覆盖父类的方法,来实现字类特有的方法
  • 父类比较抽象,字类比较具体

以对象来思考

  • 当设计一个类时,要记得对象是靠类的模型塑造出来的
  • 对象是已知的事物(实例变量instance variable)表示对象的状态,每个独立的对象都会拥有一份该类型的值
  • 对象会执行的动作(方法methods)表示对象的行为

创建对象

  • 编写类
  • 编写测试用的类
  • 在测试用的类中创建对象,并存取对象的变量、调用对象的方法

Java会拾荒(主动管理内存)

创建出来的Java对象会被存储在叫做堆(Heap)的内存中,这个堆最大的特点是支持回收垃圾(Garbage-Collectible Heap),若Java虚拟机察觉到某个对象将不会再被使用时,便会将其标记为“可回收”,当内存开始不足,垃圾收集器便会启动来清理垃圾回收空间,让空间能够再次被利用。

问与答

如何创建全局的变量或方法?

使用publicstaticfinal修饰

全局的函数与数据,是否与面向对象的概念相违背?

什么是Java程序,以及如何提交?

Java类由一组类组成,其中有一个类带有启动用的main()方法,用户需要安装Java虚拟机才能让程序运行。

若有成百上千个类时要如何提交?是否可以包装成类似单一应用程序的形式?

可将所有文件包装进依据pkzip格式来存档的Java Archive(.jar)文件,在该文件中可引入一个叫做manifest的文件、其内部定义jar的哪个文件带有启动程序的main()方法

要点

  • 面向对象设计拓展功能不需要改动之前已经测试好的程序代码
  • 所有的Java程序都定义在类中
  • 类如同蓝图、描述该类型的对象要如何创建
  • 对象自治,你无需在于它如何完成任务
  • 对象有已知的事物,并能执行工作
  • 对象本身已知道的事物称为实例变量,它代表对象的状态
  • 对象可执行的动作称为方法,它代表对象的行为
  • 创建类时,可能同时会需要创建独立、测试用的类
  • 类可以继承自较为抽象的父类
  • Java的程序在执行期是一组会互相交谈的对象

《Head First Java》01_基本概念

Java的特点:

  • 友好的语法、
  • 面向对象、
  • 内存管理、
  • 跨平台可移植性。

目标:write once and run-anywhere.

工作方式:

  • 源代码(.java格式)
  • 编译器编译(javac)
  • 字节码(.class格式)
  • 在jvm上运行(可以将字节码转换成平台能够理解的形式来运行)

比如新建的一个java文件叫做MyFirstApp.java

使用javac编译器指令javac MyFirstApp会将其编译成MyFirstApp.class

最后使用%java MyFirstApp就能运行,但是得确保MyFirstApp.java内部有且仅有一个main函数

Java的版本:

  • 1.02到1.1都算Java
  • 1.2、1.3、和1.4都叫Java 2
  • 1.5开始叫做Java 5.0