- 相关推荐
Java类的基本构成
下面是关于Java类的基本构成内容,欢迎阅读!
1:Java 类的定义形式
一个完整的 Java 类通常由下面六个部分组成:
包定义语句
import 语句
类定义{
成员变量
构造方法
成员方法
}
其中:只有类定义和“{}”是不可或缺的,其余部分都可以根据需要来定义。
下面分别来学习各个部分的基本规则,看看如何写 Java 的类。
2: 包
2.1:包 是什么
在 Java 中,包是类、接口或其它包的集合,包主要用来将类组织起来成为组,从而对类进行管理。
2.2:包 能干什么
包对于下列工作非常有用:
(1):包允许您将包含类代码的文件组织起来,易于查找和使用适当的类。
(2):包不止是包含类和接口,还能够包含其它包。形成层次的包空间。
(3):它有助于避免命名冲突。当您使用很多类时,确保类和方法名称的唯一性是非常困难的。包能够形成层次命名空间,缩小了名称冲突的范围,易于管理名称。
为便于管理数目众多的类,Java 语言中引入了“包”的概念,可以说是对定义的 Java类进行“分组” ,将多个功能相关的类定义到一个“包”中,以解决命名冲突、引用不方便、安全性等问题。
就好似当今的户籍制度,每个公民除有自己的名字“张三” 、 “李四”外还被规定了他的户籍地。假定有两个人都叫张三,只称呼名字就无法区分他们,但如果事先登记他们的户籍分别在北京和上海,就可以很容易的用“北京的张三” 、 “上海的张三”将他们区分开来。如果北京市仍有多个张三,还可以细分为“北京市.海淀区的张三” 、 “北京市.西城区.平安大街的张三”等等,直到能惟一标识每个“张三”为止。
JDK 中定义的类就采用了“包”机制进行层次式管理,下图显示了其组织结构的一部分:
从图中可以看出,一个名为 java 的包中又包含了两个子包:io 包和 lang 包。lang 包中包含了 System, String, Object 三个类的定义。事实上,Java 包中既可以包含类的定义,也可以包含子包,或同时包含两者。
简而言之: 从 逻辑 上 讲 , 包 是一 组 相 关类 的集 合 ; 从 物 理 上 讲 , 同 包即 同 目 录。
2.1:JDK 中常 用的 包
java.lang----包含一些 Java 语言的核心类,包含构成 Java 语言设计基础的类。在此包中定义的最重要的一个类是“Object” ,代表类层次的根,Java 是一个单根系统,最终的根就是“Object” ,这个类会在后面讲到。
Java 并不具有“自由”的方法,例如,不属于任何类的方法,Java 中的所有方法必须始终属于某个类。经常需要使用数据类型转换方法。Java 在 Java.lang 包中定义了“包装对象”类,使我们能够实现数据类型转换。如 Boolean、Character、Integer、Long、Float 和Double,这些在后面会讲到。
此包中的其它类包括:
? Math——封装最常用的数学方法,如正弦、余弦和平方根。
? String,StringBuffer——封装最常用的字符串操作。
你不必显示导入该包,该 Java 包通常已经导入。
java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
javax.swing----完全 Java 版的图形用户界面(GUI)解决方案,提供了很多完备的组件,可以应对复杂的桌面系统构建。
java.net----包含执行与网络相关的操作的类,如 URL, Socket, ServerSocket 等。
java.io----包含能提供多种输入/输出功能的类。
java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的方法。还有重要的集合框架。
2.2:Java 中 如何 表达 包 ——package 语 句
Java 语言使用 package 语句来实现包的定义。package 语句必须作为 Java 源文件的第一条语句, 指明该文件中定义的类所在的包。 若缺省该语句, 则指定为无名包, 其语法格式为:
package pkg1[.pkg2[.pkg3…]]; //“[]”表示可选Java 编译 器 把包对 应 于 文 件系 统 的目 录管 理,因此包也可以嵌套使用,即一个包中可以含有类的定义也可以含有子包,其嵌套层数没有限制。package 语句中,用‘.’来指明包的层次;
Java 语言要求包声明的层次和实际保存类的字节码文件的目录结构存在对应关系, 以便将来使用该类时能通过包名(也就是目录名)查找到所需要的类文件。简单地说就是包的层次结构需要和文件夹的层次对应。
注意:每 个源文 件 只 有一 个 包 的 声 明, 而 且包 名 应 该 全部 小 写 。
具体来说,程序员要做以下工作:
2.3:编译和 生 成 包
如果在程序 Test.java 中已定义了包 p1,就必须将编译生成的字节码文件 Test.class 保存在与包名同名的子目录中,可以选用下述两种方式之一:
采用下述命令编译:
javac Test.java
则编译器会在当前目录下生成 Test.class 文件, 再在适合位置手动创建一个名为 p1 的子目录,将 Test.class 复制到该 p1 目录下。
采用简化的编译命令,就是可以带包编译
javac -d destpath Test.java
归入该包的类的字节代码文件应放在 java 的类库所在路径的 destpath 子目录下。 现在包的相对位置已经决定了,但 java 类库的路径还是不定的。事实上,java 可以有多个存放类库的目录,其中的缺省路径为 java 目录下的 lib 子目录,你可以通过使用-classpath 选项来确定你当前想选择的类库路径。 除此之外, 你还可以在 CLASSPATH 环境变量中设置类库路径。 destpath 为目标路径, 可以是本地的任何绝对或相对路径。 则编译器会自动在 destpath目录下建立一个子目录 p1,并将生成的.class 文件自动保存到 destpath/p1 下。例如:
javac -d . Test.java
javac -d C: est Test.java
2.4:带包 运行
运行带包的程序,需要使用类的全路径,也就是带包的路径,比如上面的那个程序,就使用如下的代码进行运行:
java p1.Test
3:import
为了能够使用某一个包的成员,我们需要在 Java 程序中明确导入该包。使用“import”语句可完成此功能。在 java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以有 0~多条,其语法格式为:
import package1[.package2…].(classname|*);
java 运行时环境将到 CLASSPATH + package1.[package2…]路径下寻找并载入相应的字节码文件 classname.class。 “*”号为通配符,代表所有的类。也就是说 import 语句为编译器指明了寻找类的途径。
例,使用 import 语句引入类程序:TestPackage.java
java 编译器默认为所有的 java 程序引入了 JDK 的 java.lang 包中所有的类(import java.lang.*;) ,其中定义了一些常用类:System、String、Object、Math 等。因此我们可以直接使用这些类而不必显式引入。但使用其它非无名包中的类则必须先引入、后使用。
3.1:Java 类 搜寻方 式
程序中的 import 语句标明要引入 p1 包中的 Test 类, 假定环境变量 CLASSPATH 的值为
“.;C:jdk6lib;D:ex” , java 运行环境将依次到下述可能的位置寻找并载入该字节码
文件 Test.class:
.p1Test.class
C:jdk6libp1Test.class
D:exp1Test.class
其中, “.”代表当前路径,如果在第一个路径下就找到了所需的类文件,则停止搜索。
否则依次搜索后续路径,如果在所有的路径中都未找到所需的类文件,则编译或运行出错。
4: 访问修饰 符
Java 语言允许对类中定义的各种属性和方法进行访问控制, 即规定不同的保护等级来限制对它们的使用。为什么要这样做?Java 语言引入类似访问控制机制的 目的 在 于实 现 信息的 封 装 和 隐藏。 Java 语言为对类中的属性和方法进行有效地访问控制, 将它们分为四个等级:private, 无修饰符, protected, public,具体规则如下:
变量和方法可以处于四个访问级别中的一个:公共,受保护,无修饰符或私有。类可以在公共或无修饰级别。
变量、方法或类有缺省(无修饰符)访问性,如果它没有显式受保护修饰符作为它的声明的一部分的话。这种访问性意味着,访问可以来自任何方法,当然这些方法只能在作为对象的同一个包中的成员类当中。
以修饰符 protected 标记的变量或方法实际上比以缺省访问控制标记的更易访问。 一个protected 方法或变量可以从同一个包中的类当中的任何方法进行访问, 也可以是从任何子类中的任何方法进行访问。 当它适合于一个类的子类但不是不相关的类时, 就可以使用这种受保护访问来访问成员。
5: 类定义
Java 程序的基本单位是类,你建立类之后,就可用它来建立许多你需要的对象。Java把每一个可执行的成分都变成类。
类的定义形式如下:
这里,类名要是合法的标识符。在类定义的开始与结束处必须使用花括号。你也许想建立一个矩形类,那么可以用如下代码:
6、Java中区分大小写。
类和接口名首字母必须大写,采用驼峰命名法,每一个名单词的首字母大写,例如:MyFirstJavaProgram;
7、类名和源文件名必须一致。
例如下面的程序
public class FirstJava{
public static void main(String [] arg0){
System.out.println("My First Java File"); //输出一句话:My First Java File
}
}
类名是FirstJava,那么你保存的源程序文件名为FirstJava.java。
8、方法名命名。
大小写都行,一般来说都是第一个单词小写,后面的单词还是采用驼峰命名法,例如:getValue(),setValue(int value);
9、成员变量名命名。
大小写都行,一般都是第一个单词小写。如果是全局静态变量或者常量全部单词都要大写,例如:public static int VALUE = 10;public static final int VALUE = 10;
10、方法参数命名。
方法参数大小写都行,一般都是第一个单词小写;
11、入口方法。
所有Java程序的入口是public static void main(String [] arg0)方法,所以看程序一般都是从main方法看起;
12、注意分行。
Java程序中的分号";"表示你这句话说完了,一句话说完了就另起一行,不要想着节省纸张。
13、Java标识符。
Java中所有的名字(类名、方法名、变量、常量)统称为标识符,关于标识符有以下几点需要注意:
标识符是大小写敏感的;
所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始 ,首字符之后可以是任何字符的组合;
Java关键字不能用作标识符 ;
例如:
合法标识符举例:age、$salary、_value、__1_value
非法标识符举例:123abc、-salary、#name、25name、class、&time、if
14、Java中的注释。
注释就是辅助说明你的程序,方便阅读,注释的部分会被Java编译器忽略掉。注释分为单行注释("//"或者"/* ............*/")和多行注释(/** .........*/),
/**
* 程序的入口方法。(这个是多行注释)
*/
public static void main(String[] args) {
/* 打印一句话 (这是单行注释) */
System.out.println();// 打印一句话(这是单行注释)
}
15、Java中的空行。
空行会被编译器忽略,用空行多是为了让程序整洁易读。
总结:写代码重要的是整洁、易读,让自己和别人都看得懂很重要。这里可能有人会说我自己写的代码我还不知道,如果你这样认为那你肯定没有写过多少代码。在工作中有的时候你是做很多项目,做完一个再做一个之后让你回头改第一个项目的bug这个时候如果你的代码写的不整洁也没有添加注释的话你有你受的,这也是给写程序的人们一个建议。
16、算数运算符
+在数字, 字符, 字符串相加时是不同的
/整数除法忽略小数部分
%模数的符号忽略不计, 结果的正负只取决于被模数
++自增1, 如果写在前面就是先运算后取值, 如果写在后面就是先取值后运算
--自减1, 和++同理
17、赋值运算符
赋值运算符就是给运算符左边的变量赋值
= 给运算符左边的变量赋值
+= 也是给左边的变量赋值, 例如: x += 5 类似于 x = x + 5
-=, *=, /=, %= 和+=原理相同
18、比较运算符
比较运算符就是比较运算符两边的值, 得到一个布尔值
==, !=, >, <, >=, <=
19、逻辑运算符
对布尔值进行操作, 得到的结果也是布尔值
& 与(并且) AND 左右两边都为true, 结果才为true
| 或(或者) OR 左右两边有一边为true, 结果就为true
&& 和 & 运行结果相同, 具有短路效果、 如果前半为false, 那么后半不执行
|| 和 | 运行结果相同, 具有短路效果、 如果前半为true, 那么后半不执行
^ 异或 XOR 两边不同就是true, 相同就是false
! 非 NOT 取反, 原来是true结果就是false, 原来是false结果就是true。
【Java类的基本构成】相关文章:
java类的构成04-28
C语言的基本构成12-05
java类笔试题目07-21
Java基本数据类型有哪些12-16
网站页面设计的构成要素09-14
什么是Java10-28
Java基础知识精选02-20
新手如何学习Java07-06
Java语言的内部类12-13
Java语言的编程特点03-18