JAVA面向对象编程(孙卫琴)读书笔记(四)

一个java源文件
包含了一个或零个包声明语句 package
包含了零个或多个引入语句 import
包含零个或多个类的声明  class
包含零个多个接口的声明 interface   (但是最多只有一个类或者是接口为public 且源文件的名字要

和声明为public 的类和接口一致)

 

包的命名
例如:com.abc.netstore.common.SysContent类
从上面这个类所处的位置,我们可以得到以下信息
他是abc公司的netstore项目中common包中的一个类
此类命名也就是网上的url命名规范的反转形式 如 abc公司的网址是 http://netstore.abc.com

 

JDK中提供的java基础包
java.lang--包含了线程类Thread 、异常类Exception 、系统类 System、整数类Integer、和字符串类
String、这个包是经常用到的,所以java虚拟机是自动引入的。

java.awt--抽象窗口工具包,其包含了用于构建GUI节界面的类及其绘图雷

java.io--输入输出包,其包含了各种输入流类和输出流类。

java.util--提供一些使用的类,例如 日期类,集合类

java.net支持tcp/ip网络协议,包含socket类和url相关的类,这些类主要用于网络编程。

除了上面所说的包,还有其他的,例如 数据库编程用的 java.sql包, 用于编写网络程序的java.rmi
另外 javax.* 包 是对基本包的扩展 例如,用于编写gui程序的javax.swing,以及用于写声音程序的
javax.sound包
JDK中所有包中的类构成了java类库,或者叫J2SE API(呵呵,现在总算对它有个明确的概念了)

 

在引入包中的类的时候要注意了,一定要把类的地址全给出来
例如  import com.bac.netstore.Shop
      import com.bac.netstore.*
前者的性能要优于后者

 

如果要引入来自两个不同包的同名类,程序中必须提供完整的类名类区分
如:

 import com.bac.bookstore.Book;
 import com.abc.hotel.Book;
 
 public class Appmai{

      public static void main(String args[]){
        com.abc.bookstore.Book book1=new  com.abc.bookstore.Book();
        com.abc.hotel.Book book2=new  com.abc.hotel.Book();
}
}
同时要注意的是,像上面那样引入这两个类的时候 用improt com.abc.* 是不行的

 

return的两种用法
一种是我们常用的 根据方法返回相对应的类型
另一种的就是结束执行本方法
如 public void speak(String word1,String word2){
    if (word1==word2)
    return//结束本方法的调用
    }

 

程序的入口 main()
以下的形式都是可以的,取决于个人喜好
public static void main (String args[])
public static void main (String[] args)
static public void main (String args[])
此外static 修饰的方法默认的都是final 类型的(不能被子类覆盖的)

 

关键字
类和接口声明 class,extends,implements,interface
包引入和声明 import,package
数据类型 boolean,byte,char,double,float,int,long,short
某些数据类型的可选值 false,true,null
流程控制 break,case,continue,default,do,else,for,if,return,swith,whlie
异常处理 try,catch,finally,throw,throws
修饰符abstract,final,native,private,protected,public,static,synchronized,trandient,volatile
操作符 instanceof
引用 this,super

java语言保留字 const和goto
关键字使用要注意的  都是要小写,friendly,sizeof不是java关键字,程序中的标识符不能用关键字命

 


上面说的标识符是指程序中的包、类、接口、变量、方法
他们的命名规则为
 开头必须是字母、下划线、美元符号$或者是人民币符号¥
 由字母和数字(区分大小写)下划线" _" 以及美元符号组成
 大小写敏感 hello Hello HELLO 这三个是不同的标识符

 

编程规范
 类和接口开头要大写,如果有几个单词组成,每个单词开头要大写  SmartDoll
 方法和类名 开头要小写,如果有几个单词构成,后面的单词开头要大写 allChilren
 包名要小写
 常量名要大写  final String  DEFAULT_COLOR_OF_BULE="yellow";

 


java常用目录结构
src 存放java源文件
classes  存放已经编译好了的类文件
lib 存放第三方的java软件的jar文件
doc 存放各种帮助文档
doc/api 存放javaDoc文档
depoly 存放java应用的打包文件--jar文件

 

JDK 包含了
java虚拟机 其可以在各种操作系统平台上
JDK类库
开发工具 这些工具都是可执行文件 包括 javac.exe(编译工具)、java.exe(运行工具)、javadoc.exe(

生成javaDoc文档工具)、jar.exe(打包工具)

 


javac命令的主要选项
-nowarn 不输出警告信息
-verbose 输出详细信息

-classpath <路径> 覆盖classpath的环境变量
-sourcepath <路径> 指定java源文件路径
-d <目录> 指定要生成的类文件的目录,此目录必须以存在

例如: javac -sourcepath c:\dollapp\src
             -classpath c:\dollapp\classes
             -d c:\dollapp\classes
             c:\dollapp\src\com\abc\dollapp\main\*.java
             c:\dollapp\src\com\abc\dollapp\doll\Doll.java

上面的命令信息是 源文件在c:\dollapp\src 而classpath路径设置为c:\dollapp\classes
生成的类文件存储在 c:\dollapp\classes,编译的源文件有

c:\dollapp\src\com\abc\dollapp\main\*.java路径下的所有java文件,和
c:\dollapp\src\com\abc\dollapp\doll\Doll.java下的Doll.java文件。
如果要编译多个文件的时候 用空格隔开
(直接用cd 切换到当前目录下进行编译就可以了,还这么麻烦)

 


java命令的主要选项
-classpath 覆盖classpath路基
-verbose 输出详细的信息

-D<属性名=属性值>设置系统属性
如:java -Duser="tom" Someclass
user为属性名,tom为属性值,Someclass为类名
-jar 指定运行某个jar文件中的特定类   例如:java -jar c:\lib\mytools.jar Someclass

 


classpath路径的设定
DOS 下进行设定  c:> set classpath=c:\classes2
用java 命令或者是javac命令进行设定 c:\>java -classpath c:\classes3
(直接在环境变量里设置就OK了,还这么麻烦)

 


java应用打包
用DOS命名切换到c:\dollapp\classes目录下
执行   jar -cvf c:\dollapp\deploy\dollapp.jar  *.*
次命令 把c:\dollapp\classes目录下所有的包括子目录的所有类文件打包为dollapp.jar

jar cf mychiv.jar  *.class


前面还提到了 用java执行jar文件中一个特定的类文件,比如要执行主程序文件,
java -jar  dollapp.jar  AppMain
还有一种方法
就是在你要打包的文件夹里创建一个Manifest.txt文件
里面包含的内容为 Main-Class: com.abc.dollappp.main.AppMain
此文件的内容表明jar文件中的主程序文件为com.abc.dollappp.main.AppMain类
切换到要打包的目录下 执行以下命令  jar -cvfm  dollapp.jar  Manifest.txt *.*
当我们再执行 java -jar dollapp.jar 就直接会执行AppMain类

 

java虚拟机的运行                              java虚拟机
                                                 |------------------------------|
  AppMain.java---AppMain.class---|      类加载器           |
                                                 |         |                    |
                                                 |      字节码验证器    |
                                                 |         |                    |
                                                 |      解析器              |
                                                 |         |                    |
                                                 |      运行时环境        |
                                                 |                              |
                                                 |------------------------------|
                                                          |
                                               |----------|---------------|
                                     Windows      Unix          Linux

从上面的图可以看出java可以运行于不同的平台上归功于java虚拟机
而java虚拟机内部的工作流程如下
  1.把类文件中的二进制数据加载到内存中
  2.对类的二进制数据进行验证
  3.解析并执行命令
  4.运行时环境中最重要的一个资源是运行时数据区,在这里运行时数据区是操作系统为java虚拟机系

统进程分配的内存区域,由java虚拟机管辖这个区域,它进而把这块区域分配成多个子区域,
(底层的东西就是麻烦,就大概了解到这吧,等有一定的功底的时候再来研究)


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值