1、第一章 corejava 的入门一:什么是语言语言=os+数据结构+算法+思想os:操作系统数据结构:队,栈,二叉树,链表算法:做游戏开发时非常重要面试题:int a0,b0 只使用一条输出语句输出 a,b 的最大值System.out.println(|a+b|+|a-b|)/2);二:安装 jdk1)根据不同的操作系统下载不同的 jdk2)安装 jdk如果是 windows,直接双击如果是 unix,在 shell 中运行a)拷贝到家目录b)sudo chmod 777 /optc)cp jdk_6u32_liunx_i586.bin /optd)cd /opte)sudo ./jdk_6
2、u32_liunx_i586.bin3)配置环境变量在 bashrc 中配置环境变量,打开该文件,追加内容vi /.bashrc/添加以下内容CLASSPATH=. JAVA_HOME=/opt/jdk1.6.0_32PATH=$PATH:$JAVA_HOME/binexport CLASSPATH JAVA_HOME PATHCLASSPATH 指定自己编写的 class 文件的路径JAVA_HOME 指定 JDK 的安装目录三:JDK :java Development kitSun 公司在推出 Java 语言的同时,也推出了 Java 的一系列开发工具,如 JDK Java Develo
3、pment Kit(Java 开发工具包)。可以从网上免费下载。通常以 JDK 的版本来定义 Java 的版本。时间 版本 在 Java 标准函数库中的类(class)的数量-1996 JDK1.0(Java1.0) 250 重点 applet1997 JDK1.1(Java1.1) 500 比较适于开发图形界面1998 JDK1.2(Java2) 2300 可达到平台原始速度,可用于书写正规企业级应用程序或移动应用程序2000 JDK1.3(Java2)2002 JDK1.4(Java2) 计算能力大幅度提升2004 JDK1.5(Java5.0) 3500 对语言本身作重大改变,更稳定、更
4、安全、更高效补充:JDK 主要包括内容:a)Java 虚拟机:负责解析和执行 Java 程序。Java 虚拟机可运行在各种平台上;b)JDK 类库:提供最基础的 Java 类及各种实用类。java.lang, java.io, java.util, javax.swing,java.sql 包中的类都 位于 JDK 类库中。c)开发工具: 这些开发工具都是可执行程序,主要包括:javac.exe 编译工具;java.exe 运行工具;javadoc.exe 生成 JavaDoc 文档的工具jar.exe 打包工具等。四: 理解 Java 语言特征;Java 语言包括语法规则和语法规则的实现。S
5、un 公司对 Java 语言有自己的一份参考实现:JDK 。a. 编程语言:语言本质即规则 : 字符集、词法规则、句法规则 (条件语句、循环语句等);桌面应用程序 :拥有图形化用户接口的软件;服务器应用程序:通过浏览器访问运行; b. 开发环境:开发程序,不管是桌面应用还是服务器应用,均需要 JDK 的支持。c. 应用环境:面向应用程序,而不是开发系统程序或者硬件编程,比如说驱动就是系统程序,系统程序一般用 c 语言d. 部署环境:服务器应用程序需部署运行在服务器应用程序上,服务器本身也是一个Java 程序, 用 Java 语言编写的服务器应用程序部署运行时也需要 Java 语言的支持,将ja
6、va 代码打成一个包,部署到服务器这个过程叫做部署环境五. 为什么发明 Java? 为什么发明了 java,换而言之,java 有哪些优点呢?a. 提供一个解释环境-JVM1) 加速开发: Java 当初目的是开发适用于智能化电子消费设备上的软件,它是基于C+语言,但做了简化,能加速软件的开发过程2) 一次编译到处运行: 跨平台3) 多线程:多线程编程的简单性是 Java 成为流行的服务器端开发语言的主要原因之一4) 支持动态更新: 软件代码文件的替换即更新b. 提供一个比较容易的方式编程1) 更健壮:没有指针、没有内存管理;2) 纯粹的面向对象的编程:在 Java 中认为一切均是对象,对象有
7、属性以及改变属性值的方法。通过 Java 编程围绕着构建对象的模板、实例化对象、调用对象的方法和属性等来进行。c. 那么如何实现上面这些呢?虚拟机 JVM 提供一个解释环境,让 java 代码可以运行。垃圾回收机制让程序员无需在代码中进行内存管理。代码安全校验保证 java 代码的安全性。六. 理解 Java 虚拟机的特征;Jvm 是什么?简称 java 虚拟机(java virtual machine),是用软件来模拟一个虚拟的环境。我们用 java 编写的源程序经过编译以后生成字节码文件,Jvm 提供了一个解释运行 java 字节码文件的环境,只要在不同操作系统上安装了 jvm 后,就能对
8、同一个java 程序进行解释运行,这就 java 的跨平台,一次编译,到处运行。七. 描述垃圾收集的概念;什么叫垃圾回收:1) 垃圾:无用对象所占据的内存空间;垃圾回收:将无用对象所占据内存空间进行回收的过程;为什么要垃圾回收?1) 对象创建,需要占用内存空间,在一个程序运行过程中要创建无数个对象,如果对象永久占用内存,那么内存很快会消费光,倒致后续对象无法创建或者出现内存不足的错误。因此必须采取一定措施及时回收那些无用对象的内存,这样保证内存可以被重复利用。C+等程序由程序员显示进行内存释放,这样有可能:c:malloc() free()c+:new delete1) 忘记内存释放,倒致无端
9、的内存占用;2) 释放核心类库占用内存,倒致系统崩溃;Java 中垃圾回收处理:1) 由虚拟机通过一个系统级的垃圾回收器线程自动完成,不会忘记也不会释放错,系统更加稳定;Java 中垃圾回收处理特点: 1) 由虚拟机通过垃圾回收器线程自动完成;2) 只有当对象不再被使用,它的内存才有可能被回收;如果虚拟机认为系统不需要额外的内存,即便对象不再使用,内存3) 程序无法显示迫使垃圾回收器立即执行垃圾回收,可以通过 java.lang.System.gc()/java.lang.Runtime.gc()建议虚拟机回收对象;4) 垃圾回收器线程在释放无用对象占用内存之前会先行调用该对象的 finali
10、ze()方法。该方法是否被调用以及被调用的时间极其不可靠。不建议重写。5)java.lang.System.gc()或者 java.lang.Runtime.gc()都只是来通知系统应该处理垃圾java 中垃圾回收处理的算法:1)标记清扫法2)内存搬移法八. 阐述 Java 平台代码安全实现策略;Java 虚拟机为 Java 程序提供运行时环境,其中一项重要的任务就是管理类,管理类的加载、连接和初始化;1) 加载:查找并加载类的二进制文件(class 文件),将其置于内存中。2) 连接:a. 验证:确保被加载类的正确性 (有正确的内部结构,并且与其他类协调一致);为什么要验证:Java 虚拟机
11、不知道某个特定的.class 文件到底是由正常的 Java 编译器生成的,还是黑客特制的。类的验证能提高程序的健壮性,确保程序被安全地执行。类验证内容:. 代码和 jvm 规范一致:语法和版本是否兼容. 代码不能破坏系统的完整性. 没有堆栈的上溢和下溢. 参数类型是正确的. 类型转换的正确的b. 准备:为类的静态变量分配内存,并将其初始化为默认值;c. 解析:把类中的符号引用转换为直接引用(一个指向所调用方法在方法区内的内存位置的指针);3) 初始化:给类的静态变量赋予正确的初始值;即时编译器(JIT compiler,just-in-time compiler)是一个把 Java 的字节码(
12、包括需要被解释的指令的程序)转换成可以直接发送给处理器的指令的程序。8020 规则:有 80%的常用功能只用有 20%的常用代码是经常使用的,Inter 公司。这个是个专业的人区完成的,完成之后会安装在 JVM 中,我们使用就可以了。九. 定义类、包和应用程序;1) Java 的工作方式:源代码: 编写 Java 源代码文件|编译器: 用编译器编译源代码。编译器会检查错误,如果有错就要改正才能产生正确的输出。|输出: 编译器会产生字节码。任何支持 Java 的装置都能够把它转译成可执行的内容。编译后的字节码与平台无关。|Java 虚拟机: 可以读取与执行字节码。加载指定类,开始执行它的 mai
13、n 方法,然后一直运行到 main 的所有程序代码结束为止。2) Java 的程序结构:a. 源文件:包含 Java 代码( 按 java 语法规则编写的内容)的文件;特征:i. 以 java 作为后缀;ii. 可以包含多个类/接口;iii.名称与类名(只包含一个类/接口)或 public 修饰的类/接口(包含多个类/ 接口)同名;结构:i. 包的声明语句(可有可无,如有只能有一行,且位于最前面);package 的作用:1.使用文件来进行层次管理的 class2.在同一个包中不能出现相同的类名,避免命名冲突。3.一旦起了包名,类名就发生改变 .包名.类名=权限类名ii. import 语句(
14、 可有可无, 可有多行,紧跟着包的声明语句);iii.类的声明语句();b. 类:Java 代码组织的单位, Java 代码都是以一个个类形式组织的。用 Java 语言编写程序其实就是编写一个个类;一个类里的语句内容用大括号括起来,一个类里带有零至多个方法。结构: i. 类的声明语句,例:public class HelloWorld ii. 类的内容语句,用大括号括起来:(1) 属性;(2) 方法: c. 方法:类似于其它语言里的函数或过程。方法里带有零至多行语句。结构: i. 方法的声明语句,例:public static void main(String args) ii. 方法体,用大
15、括号括起来:1) 属性;(2) Java 语句; d. Main 方法:Java 虚拟机执行 Java 程序时,首先执行调用的方法。main 方法又叫程序的入口方法或起点方法。不管你的程序有多大,不管你的程序有多少个类,一定都会有一个 main()方法来作为程序的起点。3) 剖析类: public class FirstJavaProgrampublic static void main(String args) System.out.println(“Hello Java, I am your fans!“);public: 公开给其它类存取;class: 类声明的关键字;FirstJava
16、Program: 类的名称;void: 方法的返回值;main: 方法的名称;String: 数组类型;rgs: 参数名称;System.out.println: 打印到标准输出上(默认为命令行)“Hello Java, I am your fans!“:要输出的字符串内容;; 每一行语句必须用分号结尾;十. 编码、编译以及运用 Java 应用程序;1)编写:vi 类名 .java用记事本打开 类名.java2)编译:javac -d bin src/类名.java3)运行:java -cp bin 包名.类名-d:指定编译后的 class 文件存放的路径。编译时连同 packge 一起编译-
17、cp:-classpath 的缩写,指定执行class 文件的搜索路径的。补充:类装载机制:双亲委托机制1)启动类装载器:$JAVA_HOME/jre/lib/rt.jar2)扩展类装载器:$JAVA_HOME/jre/lib/ext3)系统类装载器:$CLASSPATH双亲委托机制:向上委托,向下加载本机运行.class 都是从系统类装载器一个完整的 Java 程序运行过程会涉及以下内存区域方法区/代码区:存放类的信息堆区:用来存放动态产生的数据,比如 new 出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但
18、是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。栈区:保存局部变量的值,包括:1.用来保存基本数据类型的值; 2.保存类的实例,即堆区对象的引用(指针)。也可以用来保存加载方法时的帧PC 寄存器:指向下一条需要执行的指令,将该数据传递给 CPU常量池:JVM 为每个已加载的类型维护一个常量池,常量池就是这个类型用到的常量的一个有序集合。常量池存在于堆中。数据段/静态存储区:用来存放 static 定义的静态成员。第二天:目标: 1. 标识符、关键字和类型介绍;2. 如何构建类 ?-第二章: Identifiers, Keywords and Types目标:1. 注释作用:使部
19、分内容只为程序员可见,不为编译器所编译、虚拟机所执行;增加程序的可读性位置:类声明前后、方法声明前后、属性声明前后、方法体中。几乎可以在一个源文件任意位置,但不能在一个关键字字符中插入注释。类型:1) 单行注释: /text从“/“到本行结束的所有字符均作为注释而被编译器忽略2) 多行注释:/*text*/ 从“/*“到“*/“间的所有字符会被编译器忽略3) 文档注释:/* text */从“/*“到“*/“间的所有字符会被编译器忽略。当这类注释出现在任何声明(如类的声明、类的成员变量的声明或者类的成员方法的声明)之前时,会作为 JavaDoc 文档的内容;示例:1) /package dec
20、laration package ch01; /允许;2) package /*package declaration*/ch01; /允许;3) class /*class declaration*/ FirstJavaProgram /允许;.4) System.out./*out content to console*/println(“Hello Java“); /允许;5) System.out.print/*out content to console*/ln(“Hello Java“); /不允许;javadoc -d doc -author -version *.java2.
21、分号、块和空格1) 每个语句短语以;结束 ;2) 代码段以结束;3) 空白处(空格、tab 键、新行和回车(几个语句短语连接在一起)是无关紧要的。3. 标识符 :类、方法和变量的名字1) java 标识符以字母、_ 和$开头,不能以数字开头,后跟字母、数字、“_ ”和“$”的组合 ;2) 大小写敏感3) 没有长度限制。4) 不能使用 java 的关键字举例: 合法标识符 非法标识符try try#GROUP_7 7GROUPopenDoor open-doorboolean1 boolean4. 关键字Java 语言的关键字是程序代码中的特殊字符。包括:. 类和接口的声明 class, ext
22、ends, implements, interface. 包引入和包声明 import, package. 数据类型 boolean, byte, char, double, float, int, long, short. 某些数据类型的可选值false, true, null. 流程控制 break, case, continue, default, do, else, for, if, return, switch, while. 异常处理 catch, finally, throw, throws, try. 修饰符 abstract, final, native, private,
23、protected, public, static, synchronized, transient, volatile. 操作符 instanceof. 创建对象 new. 引用this, super. 方法返回类型 voidJava 语言的保留字是指预留的关键字,它们虽然现在没有作为关键字,但在以后的升级版本中有可能作为关键字。. 所有关键字都是小写;. friendly, sizeof 不是 Java 语言的关键字,这有别于 C+;. 程序中标识符不能以关键字命名;5. 基本类型:程序的基本功能是处理数据,程序用变量来表示数据;程序中必须先定义变量才能使用;定义变量是指设定变量的数据类型
24、和变量的名字,定义变量的基本语法为:数据类型 变量名;Java 语言把数据类型分为基本类型和引用类型。- 基本类型 数值类型 浮点数类型 floatdouble整数类型 byteshortintlong字符类型 charboolean - 引用类型 引用 类类型接口类型数组类型- 接下来,我们主要关注基本数据类型,关注各种基本数据类型 有什么样的取值范围?占用多少内存空间? 6. boolean 类型位置 boolean 类型变量取值 - Java 源程序 只能是 true 或 falseclass 文件 用 int 或 byte 表示 boolean虚拟机中 用整数 0 来表示 false,
25、 有任意一个非零整数表示 true强调,在 Java 源程序中不允许把整数或 null 赋给 boolean 类型的变量,这是有别于其它语言(如 c 语言)的地方. 例:boolean isMarried = 0; /编译出错,提示类型不匹配boolean isMarried = null; /编译出错,提示类型不匹配7. 文本数据类型 char 和 String1) 字符编码:Java 语言对文本字符采用 Unicode 字符编码。由于计算机内存只能存取二进制数据,因此必须为各个字符进行编码。所谓字符编码,是指用一串二进制数据来表示特定的字符。常见的字符编码包括:a. ASCII 字符编码A
26、SCII-Amecian Standard Code for Information Interchange(美国信息交换标准代码). 主用于表达现代英语和其他西欧语言中的字符。它是现今最通用的单字节编码系统,它只用一个字节的 7 位,一共表示 128 个字符。b. ISO-8859-1 字符编码,又称为 Latin-1, 是国际标准化组织(ISO)为西欧语言中的字符制定的编码,用一个字节(8 位)来为字符编码,与 ASCII 字符编码兼容。所谓兼容,是指对于相同的字符,它的 ASCII 字符编码和 ISO-8859-1 字符编码相同。c. GB2312 字符编码它包括对简体中文字符的编码,一
27、共收录了 7445 个字符(6763 个汉字+682 个其他字符. 它与 ASCII 字符编码兼容。d. GBK 字符编码对 GB2312 字符编码的扩展,收录了 21886 个字符(21003 个字符+其它字符), 它与 GB2312 字符编码兼容。e. Unicode 字符编码:由国际 Unicode 协会编制,收录了全世界所有语言文字中的字符,是一种跨平台的字符编码。UCS(Universal Character Set)是指采用 Unicode 字符编码的通用字符集。Unicode 具有两种编码方案:. 用 2 个字节 (16 位)编码,被称为 UCS-2, Java 语言采用;. 用
28、 4 个字节 (32 位)编码,被称为 UCS-4;f. UTF 字符编码有些操作系统不完全支持 16 位或 32 位的 Unicode 字符编码,UTF(UCS Transformation Format)字符编码能够把Unicode 字符编码转换为操作系统支持的编码,常见的 UTF 字符编码包括 UTF-8, UTF-7 和 UTF-16.2) char 的几种可能取值Java 语言采用 UCS-2 字符编码,字符占 2 个字节。字符 a 的二进制数据形式为 0000 0000 0110 0001十六进制数据形式为 0x0061十进制数据形式为 97以下 4 种赋值方式是等价的:char
29、c = a;char c = u0061; /设定“a“ 的十六进制数据的 Unicode 字符编码char c = 0x0061; /设定“a“的十六进制数据的 Unicode 字符编码char c = 97; /设定“a“的十进制数据的 Unicode 字符编码3) 转义字符Java 编程人员在给字符变量赋值时,通常直接从键盘输入特定的字符,而不会使用 Unicode 字符编码,因为很难记住各种字符的 Unicode 字符编码值。对于有些特殊字符,比如单引号,如不知道它的 Unicode 字符编码,直接从键盘输入编译错误:char c = ; /编码出错为了解决这个问题,可采用转义字符来表
30、示单引号和其他特殊字符: char c = ;char c = ;转义字符以反斜杠开头,常用转义字符:n 换行符,将光标定位到下一行的开头;t 垂直制表符,将光标移到下一个制表符的位置;r 回车,将光标定位到当前行的开头,不会移到下一行; 反斜杠字符 单引号字符8. 整数类型byte, short, int 和 long 都是整数类型,并且都是有符号整数。与有符号整数对应的是无符号整数,两者的区别在于把二进制数转换为十进制整数的方式不一样。. 有符号整数把二进制数的首位作为符号数,当首位是 0 时,对应十进制的正整数,当首位是 1 时,对应十进制的负整数。对于一个字节的二进制数, 它对应的十进
31、制数的取值范围是-128 - 127。. 无符号整数把二进制数的所有位转换为正整数。对于一个字节的二进制数, 它对应的十进制数的取值范围是 0 - 255。在 Java 语言中,为了区分不同进制的数据,八进制数以“0”开头,十六制以“0x” 开头。举例: 一个字节的二进制数 八进制数 十六进制数 有符号十进制数 无符号十进制数-0000 0000 0000 0x00 0 01111 1111 0377 0xFF -1 2550111 1111 0177 0x7F 127 1271000 0000 0200 0x80 -128 128如果一个整数值在某种整数类型的取值范围内,就可以把它直接赋给这
32、种类型的变量,否则必须进行强制类型的转换。byte = 13;如 129 不在 byte 类型的取值范围(-128-127)范围内,则必须进行强制类型的转换。byte b = (byte)129; /变量 b 的取值为 -127.如果一个整数后面加上后缀大写“L“或小写“l“, 就表示它是一个 long类型整数。以下两种赋值是等价的:long var = 100L; /整数 100 后面加上大写的后缀 “L“,表示 long型整数;long var = 100l; /整数 100 后面加上大写的后缀“l“,表示 long 型整数;Java 语言允许把八进制数(以“0“开头), 十六进制数(以“
33、0x“开头)和十进制数赋给整数类型变量,例如:int a1 = 012; /012 为八进制数,变量 a1 的十进制取值为10int a2 = 0x12; /0x12 为十六进制数,变量 a2 的十进制取值为 18int a3 = 12; /12 为十进制数,变量 a3 的十进制取值为 12int a4 = 0xF1; /0xF1 为十六制数,变量 a4 的十进制取值为241? byte b = (byte)0xF1 /0xF1 为十六制数,变量 b 的十进制取值为-159. 浮点类型浮点类型表示有小数部分的数字。Java 中有两种浮点类型:. float: 占 4 个字节,共 32 位,称为
34、单精度浮点数;. double: 占 8 个字节,共 64 位,称为双精度浮点数;float 和 double 类型都遵循 IEEE754 标准,该标准分别为 32 位和 64 位浮点数规定了二进制数据表示形式。float=1(数字符号)+8(指数,底数为 2)+23(尾数)double=1(数字符号)+11(指数,底数为 2)+52(尾数)在默认情况下,小数及采用十进制科学计数法表示的数字都是 double 类型,可以把它直接赋值给 double 类型变量。double d1 = 1000.1;double d2 = 1.0001E+3; /采用十进制科学计数法表示的数字,d2 实际取值为
35、1000.1double d3 = 0.0011;double d4 = 0.11E-2; /采用十进制科学计数法表示的数字,d4 实际取值为 0.0011如果把 double 类型的数据直接赋给 float 类型变量,有可能会造成精度的丢失,因此必须进行强制类型的转换,否则会导致编译错误,例如:float f1 = 1.0 /编译错误,必须进行强制类型转换;float f2 = 1; /合法,把整数 1 赋值给 f2,f2 的取值 1.0;float f3 = (float)1.0; /合法,f3 的取值为 1.0;float f4 = (float)1.5E+55; /合法, 1.5E+5
36、5 超出了 float 类型的取值范围,f4 的取值为正无穷大System.out.println(f3); /打印 1.0;System.out.println(f4); /打印 Infinity-Float.NaN 非数字Float.POSITIVE_INFINITY 无穷大Float.NEGATIVE_INFINITY 负无穷大float f1 = (float)(0.0/0.0); /f1 的取值为 Float.NaNfloat f2 = (float)(1.0/0.0); /f2 的取值为 Float.POSITIVE_INFINITYfloat f3 = (float)(-1.0/
37、0.0); /f3 的取值为 Float.NEGATIVE_INFINITYSystem.out.println(f1); /打印 NaN;System.out.println(f2); /打印 InfinitySystem.out.println(f3); /打印-InfinityJava 语言之所以提供以上特殊数字, 是为了提高 Java 程序的健壮性,并且简化编程。当数字运算出错时,可以用浮点数取值范围内的特殊数字来表示所产生的结果。否则,如果 Java 程序在进行数学运算遇到错误时就抛出异常,会影响程序的健壮性,而且程序中必须提供捕获数学运算异常的代码块,增加了编程工作量。10. 变量
38、的申明和赋值程序的基本功能是处理数据程序用变量来表示数据;程序中必须先定义变量才能使用;定义变量是指设定变量的数据类型和变量的名字,定义变量的基本语法为:数据类型 变量名;Java 语言要求变量遵循先定义,再初始化,然后使用的规则。变量的初始化是指自从变量定义以后,首次给它赋初始值的过程。例:int a; /定义变量 aa = 1; /初始化变量 aa+; /使用变量 aint b=a; /定义变量 b, 初始化变量 b, 使用变量 a;b+; /使用变量 b11. 推荐命名规则e12. 理解对象明白什么是面向对象编程面向对象的开发方法把软件系统看成各种对象的集合,对象就是最小的子系统,一组相
39、关的对象能够组合成更复杂的子系统。面向对象的开发方法将软件系统看成各种对象的集合,接近人的自然思维方式。对象是对问题领域中事件的抽象。对象具有以下特性:1) 万物皆为对象。问题领域中的实体和概念都可以抽象为对象。例如学生,成绩单、教师、课和教室。2) 每个对象都是惟一的。正如世界上不存在一模一样的叶子。3) 对象具有属性和行为。例如小张,性别女,年龄 22,身高 1.6m, 体重 40kg, 能够学习,唱歌。小张的属性包括姓名、性别、年龄、身高和体重,行为包括学习、唱歌。例如一部手机,牌子是诺基亚、价格是 2000 元,银白色,能够拍照、打电话和收发短信等。这部手机的属性包括品牌类型 type
40、、价格 price 和颜色 color,行为包括拍照 takePhoto(),打电话 call(),收发短信 receiveMessage()和发短信 sendMessage().4) 对象具有状态。状态是指某个瞬间对象的各个属性的取值。对象的某些行为会改变对象自身的状态,即属性的取值。例如小张本来体重为 40kg,经为减肥后,体重减到 45kg. 肥胖状态: 40kg| 减肥行为| 肥胖状态: 35kg 5) 每个对象都是某个类的实例。小张和小王都属于学生类、中国和美国都属于国家类、中文和英文都属于语言类。类是具有相同属性和行为的对象的集合。同一个类的所有实例都有相同属性,但属性取值不一事实
41、上相同,但是它们的状态不一定相同。例如小张和小王都属于学生类,都有姓名、性别、年龄、身高和体重这些属性,但是他们的属性取值不同。同一个类的所有实例都有相同行为,意味着它们具有一些相同的功能。13. 创建类类是一组具有相同属性和行为对象的模板。面向对象编程的主要任务就是定义对象模型中的各个类。package sample;public class Teacher /*attributes of a teacher*/private String name;private int age;private double salary;/* Creates a new instance of Teac
42、her */public Teacher(String name, int age, double salary) this.salary = salary;this.age = age;this.name = name;/*operations on properties */* get the name of this teacher */public String getName() return name; /*get the salary of this teacher */public double getSalary() return salary; /*get the age
43、of teacher teacher */public int getAge() return age; 代码解析: 1) package sample;包声明语句,将 Java 类放到特定的包中,便于类的组织、权限访问和区分名字相同的类。2) public class Teacher .类的声明语句,类名为 Teacher, public 修饰符意味着这个类可以被公开访问;声明类的格式:class 类名 类内容3) private String name;类的属性( 也称为成员变量 )的声明语句;Teacher 类有一个 name 属性,字符串类型,private 修饰符意味着这个属性不能被
44、公开访问。4) public String getName() return name; 方法的声明语句和方法体方法名为 getName,不带参数,String 表明返回类型为 String。public 表明这个方法可以被公开访问。getName 后紧跟的大括号为方法体,代表 getName 的具体实现。声明方法的格式: 返回值类型 方法名 (参数列表) 方法体返回值类型是方法的返回数据的类型, 如果返回值类型为 void, 表示没有返回值。方法名是任意合法的标识符;参数列表可包含零个或多个参数,参数之间以逗号“,“分开。方法体每个语句用“;“结束;方法体中使用 return 语句返回数据或
45、结束本方法的执行;注:不介绍构造方法。在面向对象章节会提到。14. 创建实例public static void main(String args) Teacher gzhu = new Teacher(“George Zhu“, 30, 10000);System.out.println(“Teacher: “ + gzhu.getName();System.out.println(“tAge: “ + gzhu.getAge();System.out.println(“tSalary: “ + gzhu.getSalary();main()方法是 Java 应用程序的入口点,每个 Java 应用程序都是从 main()方法开始运行的。作为程序入口的 main()方法必须同时符合以下几个条件:. 用 public static 修饰;. 返回类型为 void;. 方法名为 main;. 参数类型为 String;包含 main 方法的类又叫主程序类。类创建好之后,通过 new 关键字创建具体对象。它有以下作用:. 为对象分配内存空间,将对象的实例变量自动初始化为其变量类型的默认值;. 如实例变量显示初始化,将初始化值赋给实例变量;. 调用构造方法;. 返回对象的引用;注:结合实例,