NO.1 JVM虚拟机
JVM:虚拟机,Java一次编写,到处使用的关键
NO.2 JRE java运行环境
JRE:JVM + 类库
NO.3 JDK java开发工具包
JDK: JRE + JAVA的开发工具
NO.4 JDK下载
JDK下载
NO.5 Java编程工具
基础:notepad->Editplus->Eclipse
就业: MyEclipse(主攻web开发)和Eclipse都用
NO.6 Java版本
Java 标准版 :JSE 简单基础的开发, 但是java的主要技术都在这里面
Java 微缩版 : JME 针对特定开发分类的
Java 企业版 : JEE 对标准版的扩充,为企业开发解决问题
NO.7 第一个简单程序
public class HelloWorld {
public static void main(String[] args) {
System.out.println(“HelloWorld");
} }
Java 基础语法
NO.8 关键字
• abstract:表明类或类中的方法是抽象的;
• boolean:基本数据类型之一,布尔类型;
• break:提前跳出一个块;
• byte:基本数据类型之一,字节类型;
• case:在 switch 语句中,表明其中的一个分支;
• catch:用于处理例外情况,用来捕捉异常;
• char:基本数据类型之一,字符类型;
• class:类;
• continue:回到一个块的开始处;
• default:用在 switch 语句中,表明一个默认的分支;
• do:用在"do while"循环结构中;
• double:基本数据类型之一,双精度浮点数类型;
• else:在条件语句中,表明当条件不成立时的分支;
• extends:用来表明一个类是另一个类的子类;
• final:用来表明一个类不能派生出子类,或类中的方法不能被覆盖,或声明一个变
量是常量;
• finally:用于处理异常情况,用来声明一个肯定会被执行到的块;
• float:基本数据类型之一,单精度浮点数类型;
• for:一种循环结构的引导词;
• if:条件语句的引导词;
• implements:表明一个类实现了给定的接口;
• import:表明要访问指定的类或包;
• instanceof:用来测试一个对象是否是一个指定类的实例;
• int:基本数据类型之一,整数类型;
• interface:接口;
• long:基本数据类型之一,长整数类型;
• native:用来声明一个方法是由与机器相关的语言(如 C/C++/FORTRAN 语言)实现的;
• new:用来申请新对象;
• package:包;
• private:一种访问方式:私有模式;
• protected:一种访问方式:保护模式;
• public:一种访问方式:公共模式;
• return:从方法中返回值;
• short:基本数据类型之一,短整数类型;
• static:表明域或方法是静态的,即该域或方法是属于类的;
• strictfp:用来声明 FP-strict(双精度或单精度浮点数)表达式,参见 IEEE 754 算
术规范;
• super:当前对象的父类对象的引用;
• switch:分支结构的引导词;
• synchronized:表明一段代码的执行需要同步;
• this:当前对象的引用;
• throw:抛出一个异常;
• throws:声明方法中抛出的所有异常;
• transient:声明不用序列化的域;
• try:尝试一个可能抛出异常的程序块
• void:表明方法不返回值;
• volatile:表明两个或多个变量必须同步地发生变化;
• while:用在循环结构中;
• assert:声明断言;
• enum:声明枚举类型;
NO.9 数据类型
Java 中的基本数据类型分为八个原始数据类型,原始类型可分为四种: (1):整数型:byte、short、int、long
(2):浮点型:float、double
(3):字符型:char
(4):逻辑型 :boolean
整数型:
byte:字节型
short:短整型
int: 整型
long:长整型
Java 里面的转义字符 转义字符是指,用一些普通字符的组合来代替一些特殊字符,由于其组合改变了原来字
符表示的含义,因此称为“转义”。 常见的转义字符:
\n 回车(\u000a)
\t 水平制表符(\u0009)
\b 空格(\u0008)
\r 换行(\u000d)
\f 换页(\u000c)
\' 单引号(\u0027)
\" 双引号(\u0022)
\\ 反斜杠(\u005c)
NO.10 常量和变量
常量是值不可以改变的标识符。 对常量的定义规则:建议大家尽量全部大写,
并用下划线将词分隔。 如:JAVASS_CLASS_NUMBER ,FILE_PATH
变量的定义规则
(1):遵从所有标识符的规则 (2):所有变量都可大小写混用,但首字符应小写 (3):尽量不要使用下划线和$符号 (4):可以先声明再赋值,如:
int i;
i=9; 也可以声明的同时进行赋值:
int i=9;
Java 类和对象
NO.11 类的定义
一个完整的 Java 类通常由下面六个部分组成:
包定义语句 import 语句 类定义{
成员变量
构造方法
成员方法
} 其中:只有类定义和“{}”是不可或缺的,其余部分都可以根据需要来定义。
NO.12 包的定义—OC中就没有这个玩意
在 Java 中,包是类、接口或其它包的集合,包主要用来将类组织起来成为组,从而对 类进行管理。
2.2:包能干什么 包对于下列工作非常有用:
(1):包允许您将包含类代码的文件组织起来,易于查找和使用适当的类。
(2):包不止是包含类和接口,还能够包含其它包。形成层次的包空间。
(3):它有助于避免命名冲突。当您使用很多类时,确保类和方法名称的唯一性是非常困难 的。
包能够形成层次命名空间,缩小了名称冲突的范围,易于管理名称。
NO.13 构造方法
6. 1:什么是构造方法
类有一个特殊的成员方法叫作构造方法,它的作用是创建对象并初始化成员变量。
在创 建对象时,会自动调用类的构造方法。
6. 2:构造方法定义规则
Java 中的构造方法必须与该类具有相同的名字,并且没有方法的返回类型(包括没有 voi d)。
另外,构造方法一般都应用 publ i c 类型来说明,这样才能在程序任意的位置创建类 的实例--对象。
6. 3:示例
下面是一个 Rect angl e 类的构造方法,它带有两个参数,分别表示矩形的长和宽:
publ i c cl ass Rect angl e{
public Rectangle(int w,int h) {
wi dt h=w;
hei ght =h; }
}
6. 4:说明
每个类至少有一个构造方法。如果不写一个构造方法,Java 编程语言将提供一个默认的,
该构造方法没有参数,而且方法体为空。
注意:如果一个类中已经定义了构造方法则系统不再提供默认的构造方法。
NO.14 属性
8.1:属性是什么
简单点说,属性就是对象所具有的静态属性。 8.2:定义规则
Java 类中属性的声明采用如下格式:
访问修饰符 修饰符 类型 属性名称=初始值;
访问修饰符:可以使用四种不同的访问修饰符中的一种,包括 publ i c( 公共的) 、 pr ot ect ed(受保护的),无修饰符和 pr i vat e(私有的)。
publ i c 访问修饰符表示属性可以 从任何其它代码调用。pr i vat e 表示属性只可以由该类中的其它方法来调用。
pr ot ect ed 将 在以后的课程中讨论。
修饰符:是对属性特性的描述,例如后面会学习到的:st at i c、f i nal 等等。
类型:属性的数据类型,可以是任意的类型。
属性名称:任何合法标识符 初始值:赋值给属性的初始值。如果不设置,那么会自动进行初始化,基本类型使用缺
省值,对象类型自动初始化为 nul l 。
8.3:说明
属性有时候也被称为成员变量、实例变量、域,它们经常被互换使用。
NO.15 方法
9. 1:方法是什么
方法就是对象所具有的动态功能。
9. 2:定义规则
Java 类中方法的声明采用以下格式:
访问修饰符 修饰符 返回值类型 方法名称 (参数列表)
throws 异常列表 {方法体}
访问修饰符:可以使用四种不同的访问修饰符中的一种,包括 publ i c( 公共的) 、 pr ot ect ed(受保护的),无修饰符和 pr i vat e(私有的)。publ i c 访问修饰符表示方法可以 从任何其它代码调用。pr i vat e 表示方法只可以由该类中的其它方法来调用。pr ot ect ed 将 在以后的课程中讨论。
修饰符:是对方法特性的描述,例如后面会学习到的:st at i c、f i nal 、abst r act 、 synchr oni zed 等等。
返回值类型:表示方法返回值的类型。如果方法不返回任何值,它必须声明为 voi d( 空) 。
Java 技术对返回值是很严格的,例如,如果声明某方法返回一个 i nt 值,那么方法必须从 所有可能的返回路径中返回一个 i nt 值(只能在等待返回该 i nt 值的上下文中被调用。)
方法名称:可以是任何合法标识符,并带有用已经使用的名称为基础的某些限制条件。
参数列表:允许将参数值传递到方法中。列举的元素由逗号分开,而每一个元素包含一 个类型和一个标识符。在下面的方法中只有一个形式参数,用 i nt 类型和标识符 days 来声 明:public void test(int days){}
throws 异常列表:子句导致一个运行时错误(异常)被报告到调用的方法中,以便以 合适的方式处理它。异常在后面的课程中介绍。
花括号内是方法体,即方法的具体语句序列。
9. 3:示例 比如现在有一个“车”的类——Car,“车”具有一些基本的属性,比如四个轮子,一个
方向盘,车的品牌等等。当然,车也具有自己的功能,也就是方法,比如车能够“开动”— —run。要想车子能够开动,需要给车子添加汽油,也就是说,需要为 run 方法传递一些参 数“油”进去。车子跑起来过后,我们需要知道当前车辆运行的速度,就需要 run 方法具有 返回值“当前的速度”。
package cn.javass.javatest; public class Car {// 车这个类
private String make;// 一个车的品牌 private int tyre;// 一个车具有轮胎的个数 private int wheel;// 一个车具有方向盘的个数
public Car() { // 初始化属性
make = "BMW";// 车的品牌是宝马 tyre = 4;// 一个车具有4个轮胎 wheel = 1;// 一个车具有一个方向盘
}
/**
* 车这个对象所具有的功能,能够开动 * @param oil 为车辆加汽油的数量 * @return 车辆当前运行的速度
*/
public double run(int oil) { // 进行具体的功能处理 return 200.0;
} }
NO.16 为什么有栈内存和堆内存之分
#栈内存:
当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里。
随着方法的执行结束,这个方法的内存栈也将自然销毁。 因此,所有在方法中定义的局部变量都是放在栈内存中的。
#堆内存
在程序中创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。
堆内存中的对象不会随方法的结束而销毁,即使方法结束后,这个对象还可能被另一个引用变量所引用(在方法的参数传递时很常见)
则这个对象依然不会被销毁。只有当一个对象没有任何引用变量引用它时,系统的垃圾回收器才会在合适的时候回收它。
NO.17 static的作用
1.static 是一个特殊的关键字,它可用于修饰方法,成员变量等成员。
2.static 修饰的成员表明它属于这个类本身,而不属于该类的单个实例,因为通常把static修饰的成员变量和方法也称为类变量,类方法。
3.不使用static修饰的普通方法,成员变量则属于该类的单个实例,而不属于该类。因为通常把不使用static修饰的成员变量和方法也称为实例变量,实例方法。
4.static 的英文直译就是静态的意思,因此用static修饰的成员变量和方法也叫做静态变量和静态方法。
//举例:
//举例说明类成员变量和实例成员变量
public class JavaExample {
public static void main(String[] args){
//访问区别,一个不用创建实例对象直接用类访问,一个必须要创建实例来访问
Example.number = 8;
Example test = new Example();
test.temp = 10;
System.out.println( ""+Example.number+"区别"+test.temp);
}
public static class Example{
static int number;
int temp;
}
}
#注意用static修饰的成员变量,类和实例对象都可以调用,反过来是不行的
NO.18 方法传递机制
#Java中方法的参数传递只有值传递,也就是方法外部传进来的参数是不会随着传入方法内部的操作而发生改变的
举例:
public class JavaExample {
public static void main(String[] args){
int x = 9;
int y = 7;
System.out.println(Integer.toString(x));
System.out.println(Integer.toString(y));
Example.swap(x,y);
}
public static class Example{
public static void swap(int a , int b ){
int temp = a;
a = b;
b = temp;
System.out.printf("交换后a= "+a+",b = "+b);
}
}
NO.18 API
就是java提供给我们使用的类,这些类将底层的实现封装了起来,我们不需要关心这些类如何实现的,只需要学习这些类如何使用