java学习笔记[前四章]

一    :Java 发展简史

1. Java 是一种语言,具有自己的语法和数据结构

2. Java 来自于 sun ,sun 指的是斯坦福大学网络

3. 具体发展历程


Java的具体发展历程


时间


描述


1991~1995


Sun 为了占领智能消费电子产品市场,由james gosling 负责该项目,来开发 Oak(橡树) 语言


1995


将 Oak 改名为 Java,当时也是window95版本的发布


1996


发布 JDK1.0


1997


发布 JDK1.1


1998


发布 JDK1.2, 将该版本命名为 J2SDK , 将 Java更名为 Java 2


1999


1999 将 java 分为三大块: J2SE (Java 标准版)、 J2EE(Java 企业版) 、J2ME(Java 微型版本<android>)


2000


发布 J2SE1.3


2002


发布 J2SE1.4


2004


此时不再叫 J2SE1.5,叫 5.0


2005


2005 Java 10 周年,将 J2SE 改为 J AVA SE、将 J2EE 改为

J AVA EE、 将 J2ME 改为 J AVAME


2006


发布 J AVA SE 6


2011


7 月 J AVASE 7


最新


JavaOne大会上透露Java8,java9计划

java 分为三个技术平台:JAVASE(是JAVAME,JAVAEE的基础),JAVAME,JAVAEE

二     :Java 语言特性

简单性

面向对象

可移植性(一次编译,到处运行)JVM

健壮性(自动垃圾回收机制,GC)

多线程

三    : java 的运行步骤

1:编写代码

首先把我们想要计算机做的事情,通过 Java 表达出来,写成 Java 文件,这个过程就是 编写代码的过程。如上图所示的 Hello.java 文件。

2:编译

写完 Java 代码后,机器并不认识我们写的 Java 代码,需要进行编译成为字节码,编译 后的文件叫做 class 文件。如上图所示的 Hello.class 文件。

3:类装载 ClassLoader

类装载的功能是为执行程序寻找和装载所需要的类。 ClassLoader能够加强代码的安全性,主要方式是:把本机上的类和网络资源类相分离, 在调入类的时候进行检查,因而可以限制任何“特洛伊木马”的应用。

4:字节码(byte-code)校验

功能是对 class 文件的代码进行校验,保证代码的安全性。 Java 软件代码在实际运行之前要经过几次测试。JVM 将代码输入一个字节码校验器以 测试代码段格式并进行规则检查--检查伪造指针、违反对象访问权限或试图改变对象类型 的非法代码。 注意----所有源于网络的类文件都要经过字节码校验器 字节码校验器对程序代码进行四遍校验,这 可以保证代码符合JVM 规范并且不破坏系统 的完整性。如果校验器在完成四遍校验后未返回出错信息,则下列各点可被保证: - 类符合JVM规范的类文件格式 - 无访问限制异常 - 代码未引起操作数栈上溢或下溢 - 所有操作代码的参数类型将总是正确的 - 无非法数据转换发生,如将整数转换为对象引用 - 对象域访问是合法的  
5:解释(Interpreter)

可是机器也不能认识 class 文件,还需要被解释器进行解释,机器才能最终理解我们所 要表达的东西。

6:运行

四      :Java 技术三大特性 

1:虚拟机

Java 虚拟机 JVM(Java Virtual Machine)在 Java 编程里面具有非常重要的地位,约 相当于前面学到的 Java 运行环境,虚拟机的基本功能如下:

(1):通过 ClassLoader 寻找和装载 class 文件

(2):解释字节码成为指令并执行,提供 class 文件的运行环境

(3):进行运行期间垃圾回收

(4):提供与硬件交互的平台 Java虚拟机是在真实机器中用软件模拟实现的一种想象机器。Java虚拟机代码被存储 在 .class文件中;每个文件都包含最多一个public类。Java 虚拟机规范为不同的硬件平台 提供了一种编译Java技术代码的规范,该规范使Java 软件独立于平台,因为编译是针对作 为虚拟机的“一般机器”而做。这个“一般机器”可用软件模拟并运行于各种现存的计算机 系统,也可用硬件来实现。编译器在获取Java应用程序的源代码后,将其生成字节码,它是 为JVM生成的一种机器码指令。每个Java解释器,不管它是Java技术开发工具,还是可运行 applets 的Web浏览器,都可执行JVM。

JVM 为下列各项做出了定义
- 指令集(相当于中央处理器[CPU] ) - 寄存器 - 类文件格式 - 栈 - 垃圾收集堆 - 存储区
JVM 的代码格式由紧缩有效的字节码构成。由 JVM 字节码编写的程序必须保持适当的类 型约束。大部分类型检查是在编译时完成。任何从属的 Java 技术解释器必须能够运行任何 含有类文件的程序,这些类文件应符合 Java 虚拟机规范中所指定的类文件格式。

2:垃圾回收   

2.1:什么是垃圾 在程序运行的过程中,存在被分配了的内存块不再被需要的情况,那么这些内存块对程 序来讲就是垃圾。 产生了垃圾,自然就需要清理这些垃圾,更为重要的是需要把这些垃圾所占用的内存资源,回收回来,加以再利用,从而节省资源,提高系统性能。  
2.2:垃圾回收 - 不再需要的已分配内存应取消分配(释放内存) - 在其它语言中,取消分配是程序员的责任 - Java 编程语言提供了一种系统级线程以跟踪内存分配 - 垃圾收集 - 可检查和释放不再需要的内存 - 可自动完成上述工作 - 可在 JVM 实现周期中,产生意想不到的变化

2.3:提示

(1):在 Java 里面,垃圾回收是一个自动的系统行为,程序员不能控制垃圾回收的功 能和行为。比如垃圾回收什么时候开始,什么时候结束,还有到底哪些资源需要回收等,都 是程序员不能控制的。 (2):有一些跟垃圾回收相关的方法,比如:System.gc() , 记住一点,调用这些方法, 仅仅是在通知垃圾回收程序,至于垃圾回收程序运不运行,什么时候运行,都是无法控制的。 (3):程序员可以通过设置对象为 null,来标示某个对象不再被需要了, 这只是表示这个对象可以被回收了,并不是马上被回收。

3:代码安全       Java 如何保证编写的代码是安全可靠的呢?

(1):第一关:编写的代码首先要被编译成为 class 文件,如果代码写得有问题,编译期间 就会发现,然后提示有编译错误,无法编译通过。

(2):第二关:通过编译关后,在类装载的时候,还会进行类装载检查,把本机上的类和网 络资源类相分离,在调入类的时候进行检查,因而可以限制任何“特洛伊木马”的应用。 (3):第三关:类装载后,在运行前,还会进行字节码校验,以判断你的程序是安全的。

(4):第四关:如 果 你 的程序在网络上运行,还有沙箱(Sand Box)的保护,什么是沙箱呢? 就是如果你的程序没有获得授权,只能在沙箱限定的范围内运行,是 不能够访问本地资源的, 从而保证安全性。

五     :关键字

Java 中关键字的基本含义

• abstract:表明类或类中的方法是抽象的;

• boolean:基本数据类型之一,布尔类型;

• break:提前跳出一个块;

• byte:基本数据类型之一,字节类型;

• case:在 switch 语句中,表明其中的一个分支;

• catch:用于处理例外情况,用来捕捉异常;

• char:基本数据类型之一,字符类型;

• class:类; • continue:回到一个块的开始处;

• default:用在 switch 语句中,表明一个默认的分支;

• do:用在"do while"循环结构中;

• double:基本数据类型之一,双精度浮点数类型;

• else:在条件语句中,表明当条件不成立时的分支;

• extends:用来表明一个类是另一个类的子类;

• final:用来表明一个类不能派生出子类,或类中的方法不能被覆盖,或声明一个变 量是常量;

• finally:用于处理异常情况,用来声明一个肯定会被执行到的块;
PDF 文件使用 "pdfFactory Pro" 试用版本创建 www.fineprint.cn
• 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:声明枚举类型;  
1:所有关键字都是小写的

2:goto 和 const 不是 Java 编程语言中使用的关键字,但是是 Java 的保留字,也就是 说 Java 保留了它们,但是没有使用它们。true 和 false 不是关键字,而是 boolean 类型 直接量

3:表示类的关键字是 class

1:什么是标识符 在 Java 编程语言中,标识符是赋予变量、类或方法的名称。

2:标识符命名规则 命名规则如下:

(1):首字母只能以字母、下划线、$开头,其后可以跟字母‘下划线、$和数字 示例:$abc 、 _ab 、ab123 等都是有效的

(2):标识符区分大小写 (事实上整个 Java 编程里面都是区分大小写的)   abc 和 Abc 是两个不同的标识符

(3):标识符不能是关键字 (4):标识符长度没有限制

3:标识符命名建议

(1):如果标识符由多个单词构成,那么从第二个单词开始,首字母大写 示例:isText 、 canRunTheCar 等

(2):标识符尽量命名的有意义,让人能够望文知意 (3):尽量少用带$符号的标识符,主要是习惯问题,大家都不是很习惯使用带$符号的 标识符;还有在某些特定的场合,$具有特殊的含义

(4):由于 Java 语言使用 Unicode 字符集,所以字母包括: v ‘A’-‘Z’和‘a’-‘z’; v Unicode 字符集中序号大于 0xC0 的所有符号; v Unicode 字符集支持多种看起来相同的字母; v 建议标识符中最好使用 ASCII 字母

(5):标识符不应该使用中文,虽然中文标识符也能够正常编译和运行,其原因如上一 点讲到的:是把中文当作 Unicode 字符集中的符号来对待了。

例如如下程序是可以正常编译和运行的,但是不建议这么做:

public class Test {

   public static void main(String[] args) {

    String Java私塾 = "中文标识符测试";

     System.out.println("Java私塾=="+Java私塾);

    }

}  
运行结果:Java 私塾==中文标识符测试

六    :基本数据类型

Java 数据类型的分类 Java 里面的数据类型从大的方面分为两类,一是基本数据类型,一是引用类型。                
1:Java 中的基本数据类型                                                               
Java 中的基本数据类型分为八个原始数据类型,原始类型可分为四种:

(1):整数型:byte、short、int、long

(2):浮点型:float、double

(3):字符型:char

(4) :逻辑型 :boolean

引用数据类型 :类 ,接口, 数组。

:引用类型是什么

一般引用类型(reference type)指向一个对象,不是原始值,指向对象的变量是引用 变量。 在 Java 里面除去基本数据类型的其它类型都是引用数据类型

java 里面的转义字符

转义字符是指,用一些普通字符的组合来代替一些特殊字符,由于其组合改变了原来字 符表示的含义,因此称为“转义”。

常见的转义字符:

\n 回车(\u000a)

\t 水平制表符(\u0009)

\b 空格(\u0008)

\r 换行(\u000d)

\f 换页(\u000c)

\‘ 单引号(\u0027)

\" 双引号(\u0022)

\\ 反斜杠(\u005c)

逻辑型:boolean

逻辑值有两种状态,即人们经常使用的“on”和“off” 或“true”和“false”或“yes” 和“no”,这样的值是用 boolean 类型来表示的。

boolean 有两个文字值,即 true 和 false。

以下是一个有关 boolean 类型变量的声明和初始化: boolean truth = true; //声明变量 truth

注意──在整数类型和 boolean 类型之间无转换计算。有些语言(特别值得强调的是 C 和 C++)允许将数字值转换成逻辑值(所谓“非零即真”),这在 Java 编程语言中是不 允许的;boolean 类型只允许使用 boolean 值(true 或 false)。  
注意:Java 中不可以直接将整数类型和逻辑类型转换

声明和赋值

什么是声明

声明为 Java 程序实体引入标识符,能够使用这些名字访问到这些实体,

声明实体包括: 类名、属性名、方法名、变量名、参数名、接口名等等。其实简单点说就是定义某个东西并 对外宣称它。  
什么是赋值

赋值就是为一个声明的变量或者常量赋予具体的值,也就是赋予值的意思。使用一个等 号”=”来表示。 示例: int a = 5; 这句话的意思就是,声明一个类型为 int 的变量 a,并将它赋值为 5。  
字符串型  String

字符型只能表示一个字符,那么多个字符怎么表示呢? Java 中使用 String 这个类来表示多个字符,表示方式是用双引号把要表示的字符串引起 来,字符串里面的字符数量是任意多个。字符本身符合 Unicode 标准,且上述 char 类型的 反斜线符号(转义字符)适用于 String。与 C 和 C++不同,String 不能用 \0 作为结束。String 的文字应用双引号封闭,如下所示: “The quick brown fox jumped over the lazy dog.”

什么是常量

常量是值不可以改变的标识符。 对常量的定义规则:建议大家尽量全部大写,并用下划线将词分隔。

如:JAVASS_CLASS_NUMBER ,FILE_PATH 2

什么是变量

变量是值可以改变的标识符,用来引用一个存储单元,用标识符来表示,可以通过操作 变量来操作变量所对应的内存区域或值块的值。

变量是标识符 也就是说变量本质上是标识符,但是不是所有的标识符都是变量。

值可以改变 一定是值可以改变的这些标识符才被称为变量,注意是可以改变,不是一定要改变。

变量的定义规则 (1):遵从所有标识符的规则 (2):所有变量都可大小写混用,但首字符应小写 (3):尽量不要使用下划线和$符号

七      运算符:

1:算术运算

算术运算是指:+、-、*、/  等基本运算 需要注意的是: %是求 mod 运算; 整数的除法要小心: 5/2 = 2     // 不是 2.5

2:比较运算

比较运算是指:>、<、>=、<=、==、!= 等类似运算 需要注意的是: 字符可以比较大小;(用它们的 ascii 码,化为整数) 小心浮点数的相等比较 instanceof 也是一个比较运算,用来判断一个对象是否属于某个类。

3:逻辑运算

运算符&& ( 定义为“与”)和||(定义为“或”)执行布尔逻辑表达式
&&当第一个子表达式是假 时,第二个子表达式被跳过,而且当第一个子表达式是假时,整个表达式将总是假,所以不 必考虑第二个子表达式的值。

如果使用||运算符,而且第一个表达式返回真, 则 第二个表达式不必求值,因为整个表达式已经被认为是真。
4:++、---运算                                                                             
 ++运算相当于:运算的变量加 1,如:x++ 等同于  x=x+1;
 --运算恰好相反,相当于运算的变量减 1

5:=赋值运算                                                                             
 x=5 相当于把 5 这个值赋给变量 x

6:用加号(+)进行串链接

运算符 +  能够进行 String 对象的链接并生成一个新的 String:

String salutation = "Dr. ";

String name = "Jack " + "Arthur";

String title = salutation + name;

最后一行的结果是:         Dr. Jack Arthur 如果+运算符中有一个自变量为 String 对象,则其它自变量将被转换成 String。所有 对象都可被自动转换成 String,尽管这样做的结果可能是意义含糊的。不是串的对象是通 过使用 toString() 成员方法而转换成串的等价物的。  
7:三目运算 ?:

三目运算符?:表达的是:判断问号前面的条件表达式是否为真,如果为真,返回冒号前 面的值,否则返回冒号后面的值。

八   :程序流程控制

if, else 语句的基本句法是:     

if (布尔表达式){       

    语句或块;    

}  else  {        

   语句或块;    

  }           


for 循环的句法是:         

for (初值表达式; boolean 测试表达式; 改变量表达式){
            语句或语句块
         }   

do 循环的句法是:
         do {
            语句或块;
         }while (布尔测试);

while 循环的句法是:
            while  (布尔表达式) {
               语句或块         

九      对象,包,类

类是对象的抽象,对象是类的实例;

对象是由属性和行为组成;

对象的每个属性被表示为类中的一个成员变量;

属性是对象所具有的特征,而行为是对象可以做的动作;

类是具有相同属性和行为的一组对象的集合;

类是java程序的基本构造单元,java程序中所有的语句都出现在一个类中。

Java 类的定义形式

一个完整的 Java 类通常由下面六个部分组成:

包定义语句

import 语句

类定义{

成员变量 构造方法  成员方法

}

其中:只有类定义和“{}”是不可或缺的,其余部分都可以根据需要来定义。

包是什么
在 Java 中,包是类、接口或其它包的集合,包主要用来将类组织起来成为组,从而对 类进行管理。

包对于下列工作非常有用:                   
(1) :包允许您将包含类代码的文件组织起来,易于查找和使用适当的类。

(2) :包不止是包含类和接口,还能够包含其它包。形成层次的包空间。

(3):它有助于避免命名冲突。当您使用很多类时,确保类和方法名称的唯一性是非常困难 的。包能够形成层次命名空间,缩小了名称冲突的范围,易于管理名称。

从逻辑上讲,包是一组相关类的集合;从物理上讲,同包即同目录。

JDK 中常用的包
java.lang----包含一些 Java 语言的核心类,包含构成 Java 语言设计基础的类。在此包中 定义的最重要的一个类是“Object”,代表类层次的根,Java 是一个单根系统,最终的根就 是“Object”,这个类会在后面讲到。

Java 中如何表达包——package 语句
Java 语言使用 package 语句来实现包的定义。package 语句必须作为 Java 源文件的第一 条语句,指明该文件中定义的类所在的包。若缺省该语句,则指定为无名包,其语法格式为:
package  pkg1[.pkg2[.pkg3…]];          //“[]”表示可选

类定义                                                                       
Java 程序的基本单位是类,你建立类之后,就可用它来建立许多你需要的对象。Java 把每一个可执行的成分都变成类。
类的定义形式如下:
<权限修饰符> [一般修饰符]  class  <类名> {
            [<属性定义>]
            [<构造方法定义>]
            [<方法定义>]
    }

:什么是构造方法
类有一个特殊的成员方法叫作构造方法,它的作用是创建对象并初始化成员变量。在创 建对象时,会自动调用类的构造方法。

:构造方法定义规则
Java 中的构造方法必须与该类具有相同的名字,并且没有方法的返回类型(包括没有 void)。另外,构造方法一般都应用 public 类型来说明,这样才能在程序任意的位置创建类 的实例--对象。

:如何使用一个 Java 类                                        
前面学习了如何定义一个类,下面来学习如何使用一个类 1:new 关键字

假如定义了一个表示日期的类,有三个整数变量;日、月和年的意义即由这些整数变量 给出。如下所示:

class MyDate  {

int day;

int month;

int year;

}

名称 MyDate 按照大小写的有关约定处理,而不是由语意要求来定。   那 么 怎 么来使用这个类呢:在你可以使用变量之前,实际内存必须被分配。这个工作是 通过使用关键字 new 来实现的。如下所示:       在一个方法体中,声明
      MyDate today;

today = new MyDate();

这就创建了一个对象。

关键字 new 意味着内存的分配和初始化,new 调用的方法就是类的构造方法。

this.的引用

每个对象可以使用this关键字引用它本身,this.表示对当前对象的引用。

时间: 2024-10-06 04:07:38

java学习笔记[前四章]的相关文章

Java学习笔记—第九章 字符串String

第九章 字符串String Java中使用String类来创建一个字符串变量,字符串变量是类类型变量,是一个对象.声明字符串的语法格式如下:String s; 创建字符串:通过String类提供的构造方法可创建字符串,有以下几种方式: (1)创建字符串对象时直接赋值,例如: String s1 = "hello"; String s2 = new String("hello"); (2)由一个字符串创建另一个字符串,例如: String s1 = "hel

java学习笔记第二章

二.面向对象 Oriented Object 以类组织代码,以对象来封装数据 面向过程:以方法(函数)组织数据,以线性的思维去解决:当数据量少,无问题:当数据多了,方法多了,以 方法为核心组织代码,累人:扩展性差,不易维护(当多人协同项目时) C语言结构体,多个变量集合在一块,方便管理:按照这个想法,横向竖向扩散/深入思考,把相近的方法也放在一起,方法反复调用变量, 深度发散,就把方法及变量打包到一块,这种概念在C语言里没有,就起名叫做类 class [ YY] 以类来组织代码,易于维护,易于扩

我的java学习笔记(一篇文章不定时更新)

Java学习笔记 一.      原则战略思想 l  方法:快速原型 l  小目标:找一个pdf书籍快速有一个小项目出现 l  辅助:计时 记录各个学习环节的时间消耗. l  辅助:音乐 激情 l  您在博客园的登录用户名是:杂家随谈  [email protected] l 二.      WBS以及计时 步骤 计划时间 实际时间 搭建环境 2015/5/26 PDF 2015-5-26 小项目大框架实施 2015-6-1 三.      杂感 感觉难的时候,不妨站高点,站远一点看问题. 天下

java学习笔记 第二篇 核心技术(二)

第十四章 集合类 集合类用来存放对象的引用.继承关系如下图: 14.1 Collection 接口 是层次结构中的根接口,构成Collection的单位称为元素.Collection接口不能直接使用,但该接口提供了添加元素.删除元素.管理数据的方法. Collection接口常用方法: 14.2 List 集合 包括List接口以及List集合的所有实现类.List集合中的元素允许重复,各元素循序就是对象插入的顺序 1.List接口,两个重要方法: get(int index): 获取指定索引位

Java学习笔记3-操作符

Java基本操作符:+.-.*./.%.=.==.!=.+=.-=. 优先级:先乘除后加减,如果是连接符+号会优先往前匹配,比如 a+++++b,会被解释称 a++ ++ +b,所以会报错,需要自行使用括号隔离为 (a++) + (++b). 对象的引用如果赋值给了对象的引用后,2 个对象将指向同一个引用,有一个对象的引用重新赋值后将同时影响到另一个对象,比如 ClassName classA = new ClassName(); ClassName classB = new ClassName

java学习笔记10--泛型总结

java学习笔记系列: java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--对象的初始化与回收 java学习笔记3--类与对象的基础 java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址:http://www.cnblogs.com/archimedes/p/java-study-note10.html,转载

Java学习笔记_25_Collections类

25.Collections类: Collections类是一个工具类,用来对集合进行操作,它主要是提供一些排序算法,包括随机排序.反相排序等. Collections类提供了一些静态方法,实现了基于List容器的一些常用算法. Collections的一些方法列表: · void sort(List): 对List内的元素进行排序. · void shuffle(List): 对List内的元素随机排序. · void reverse(List): 对List内的元素进行逆序排列. · voi

Java学习笔记心得——初识Java

初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开始走进Java的世界.  Java产生的历史 Java来自于Sun公司的一个叫Green Project中撰写的程序语言,全球信息网(World Wide Web)兴起,Java Applet成为网页互动技术的代表,特别适合于Internet应用程序开发. Java语言的特点 1.面向对象 这是Java最重要

java学习笔记8--接口总结

接着前面的学习: java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--对象的初始化与回收 java学习笔记3--类与对象的基础 java学习笔记2--数据类型.数组 java学习笔记1--开发环境平台总结 本文地址:http://www.cnblogs.com/archimedes/p/java-study-note8.html,转载请注明源地址. 生活中的接口: 什么是接口? 一个Java接口是一些方法特