java基础1

来源:互联网 发布:datamap 软件 编辑:程序博客网 时间:2024/06/14 00:06
chap01

 java 统称 

 1970 sun 

     oak  橡树
     java 

1.java平台版本
  Java平台包括标准版(J2SE/JavaSE)、企业版(J2EE)和微缩版(J2ME)三个版本

PHP   JAVA   OBJECTSC

  Standard Edition(标准版) J2SE 包含那些构成Java语言核心的类。
比如:数据库连接、接口定义、输入/输出、网络编程
  Enterprise Edition(企业版) J2EE 包含J2SE 中的类,并且还包含用于开发企业级应用的类。

Web    Internet

比如:EJB、servlet、JSP、XML、事务控制
  Micro Edition(微缩版) J2ME 包含J2SE中一部分类,用于消费类电子产品的软件开发。
比如:呼机、智能卡、手机、PDA、机顶盒
   android  ios

2.软件开发中使用的开发工具
  SDK: software development kit  软件开发包 函数库或者工具等

  JDK  java development kit   是面向开发人员的,java开发工具以及java程序运行环境

  JRE  java runtime enviroment java运行环境,是面向应用程序使用者的
  注意:JDK安装后一般都会包含JRE的

  API application program interface 应用程序编程接口
  别人开发好的供我们来使用(java)代码就称为API,API都会有一个API说明文档,让我们去查阅学习别人写好的代码如何来使用

   1  解压所安装的程序的所有文件

   2  告诉操作系统,这个程序解压到哪里去了
     a,修改注册表
     b,修改环境变量

     Path
告诉操作系统,和命令相关的可执行文件在哪里放着
     classpath
类加载路径
     JAVA_HOME
告诉操作系统中的其他程序jdk在哪里安装

3.Why(为什么要学习CoreJava)? 
  CoreJava就是J2SE
  CoreJava是Java语言的基础,其它Java技术均是构建在Core Java基础之上。
4. What(CoreJava课程学习什么)?
   1) Java编程语法(字符集、条件语句、循环语句等);
   2) Java编程语言面向对象的概念;
   3) 图形用户界面(GUI)编程;
   4) 多线程;
   5) 网络;
   6) IO;
    ....
    ....

5.JDK主要包括内容
  a. Java虚拟机:负责解析和执行Java程序。Java虚拟机可运行在各种平台上
  b. JDK类库(API):  提供最基础的Java类及各种实用类。java.lang, java.io, java.util, javax.swing和java.sql包中的类都位于JDK类库中。
  c. 开发工具:  这些开发工具都是可执行程序,主要包括:
   javac.exe         编译工具;
   javadoc.exe       生成JavaDoc文档的工具
   jar.exe           打包工具
   等。

6.JDK安装后的目录结构:

  bin:java的相关命令
      java  javac  jar  javadoc

  db:java提供的数据库

  demo/sample:java代码的一些示例

  include:C语言的头文件等内容

  jre:java的运行环境

  lib:java所用的基本的jar包

7.java的特点:
  面向对象:
  简单性:(相对应C和C++来讲)java不需要程序员操作内存
  跨平台:一次编译,到处运行 (JVM)
  多线程:其他语言的多线程一般是系统级别的,java的多线程是语言级别的
  动态编译:(相对应C或者C++来说),在一个项目中,如果需要修改一个java文件的话,那么就修改这一个文件就行了,其他的java文件不需要动

8.垃圾回收机制(gc)
  java不需要程序员释放内存,就是因为java中有gc
  为什么要垃圾回收?
     垃圾:没有任何作用的/不再使用的内存空间
     对象创建,需要占用内存空间,在一个程序运行过程中要创建无数个对象,如果对象永久占用内存,那么内存很快会消费光,导致后续对象无法创建或者出现内存不足的错误。因此必须采取一定措施及时回收那些无用对象的内存,这样保证内存可以被重复利用。

  C++等程序由程序员显示进行内存释放,这样有可能:
      1) 忘记内存释放,导致没有意义的内存占用;
      2) 释放核心类库占用内存,倒致系统崩溃;
  
  Java中垃圾回收处理特点:              
      1) 由虚拟机通过垃圾回收器线程自动完成;
      2) 只有当对象不再被使用,它的内存才有可能被回收;如果虚拟机认为系统不需要额外的内存,即便对象不再使用,内存也不会回收;
      3) 程序无法显示迫使垃圾回收器立即执行垃圾回收,可以通过java.lang.System.gc()/java.lang.Runtime.gc()建议虚拟机回收对象
      4) 垃圾回收器线程在释放无用对象占用内存之前会先行调用该对象的finalize()方法

9.JVM(前期理解)
  Jvm是什么?简称java 虚拟机(java virtual machine),是用软件来模拟一个虚拟的环境。

  编写.java文件--->编译为.class文件--->类加载-->字节码验证-->JIT运行

  字节码验证的内容:
  代码要符合JVM的规范
  代码破坏计算机的系统或者硬件
  栈不能溢出
  方法的参数类型要正确
  类型转换要正确

  类加载:  双亲委托机制
    把我们写好并编译成的.class字节码文件从硬盘中加载到内存
    
    JVM使用类加载器来完成类加载的过程
  类加载器有:
  启动类加载器
  扩展类加载器
  本地类加载器
  自定义类加载器
  网络类加载器

  类加载器:从一个指定路径下面去加载代码运行时需要用到的java类

  一般使用到的是:
  启动类加载器   $JAVA_HOME/jre/lib
           
  扩展类加载器   jre/lib/ext


  本地类加载器   classpath


  Hello.class


10.java环境变量的设置
   JAVA_HOME CLASSPATH PATH

   windows:
   JAVA_HOME:JDK安装的目录路径
   C:\Program Files\Java\jdk1.6.0


   CLASSPATH:类加载时候查找的字节码路径

   .

   PATH:JDK安装目录里面的命令目录
   ...;%JAVA_HOME%\bin

   unix:


   vi ~/.bashrc
   
   在文件中的最后一行下面配置:
   JAVA_HOME=..../jdk1.6.0_32
   CLASSPATH=.
   PATH=$JAVA_HOME/bin:$PATH

   export JAVA_HOME CLASSPATH PATH


   保存退出后 source .bashrc  让文件生效

变量设置成功后,在新打开的命令窗口中输入命令:java或者javac 后看到相应的信息提示即可.
  java -version

11.Java的程序结构:
 
a. 源文件:
  包含Java代码(按java语法规则编写的内容)的文件;


  特征:
  i.  以java作为后缀;
  ii. 可以包含多个类/接口;
  iii.名称与类名(只包含一个类/接口)或public修饰的类/接口(包含多个类/接口)同名;


  结构:
  i.  package 包的声明语句(可有可无,如有只能有一行,且位于最前面);
  ii. import语句 导包(可有可无, 可有多行,紧跟着包的声明语句);
  iii.类的声明语句();


     Hello.java

     package com.briup.chap01;
     import java.util.Date;
     public class Hello{
        public String name;
        public int age;

        public void say(){

        }
        public static void main(String[] args){

        }

     }
     class A{}
     class B{}

b. 类:
  Java代码组织的单位, Java代码都是以一个个类形式组织的。用Java语言编写程序其实就是编写一个个类;
  
  一个类里的语句内容用大括号括起来,一个类里带有零至多个方法。
  
  结构: 
  i.  类的声明语句,例:
      public class HelloWorld 
  ii. 类的内容语句,用大括号括起来:
      类中包括:
      (1) 属性
      (2) 方法                     


c. 方法:
  类似于其它语言里的函数或过程。方法里带有零至多行语句。


  结构: 
  i.  方法的声明语句,例:
      public static void main(String[] args) 


  ii. 方法体,用大括号括起来:


d. Main方法:
  
  Java虚拟机执行Java程序时,首先执行调用的方法。main方法又叫程序的入口方法或起点方法。不管你的程序有多大,
  不管你的程序有多少个类,一定都会有一个main()方法来作为程序的起点。


      例如: FirstJavaProgram.java文件中:    

public class FirstJavaProgram{
   public static void main(String[] args) {
System.out.println("Hello Java, I am your fans!");
   }
}


public: 公开给其它类存取;
class: 类声明的关键字;
FirstJavaProgram:类的名称;
void: 方法的返回值;
main: 方法的名称;
String[]: 数组类型;
args: 参数名称;
System.out.println:打印到标准输出上(默认为命令行)
"hello world":要输出的字符串内容;
; 每一行语句必须用分号结尾;


12.java类名和文件名的关系:

  一个java源文件(.java)中,可以有好多个类(class),但是,最多只能有一个类(class)被public修饰

  如果有一个类被public修饰,那么这个源文件(.java)的名字就必须和这个被public修饰的类的名字一致(必须),而且还要首字母大写(首字母大写是命名规范,其实小写也可以的)



13.java文件中的三个顶级元素:

  package
  1.最终会是以文件夹的形式体现出来(有什么包,就必须有什么文件夹,运行的时候.class文件必须在这个文件夹下面)
  2.  .java文件中有多个package的时候,用.分割并且结尾用;号结束 例如:(com.briup.test;)
  3.包也是java中类的标识的一部分,确定某一个类是通过包名加类名来唯一确定的 比较运行java类的时候:
  java package.类名 (java com.briup.test.HelloPackage)

  import
  1.导包用的关键字
  2.如果你想在当前这个类使用其他的类,那么就必须通过这个关键字,把那个类导入进来
  3. java.lang包下面的类可以直接使用,不用导入.
  4. 和当前这个类位于同一个包下面的类,也不需要导入,可以直接使用 

  class
  java中标识一个类的关键字
  (java类中可以没有package,也可以没有import,但是一定会class)

注意:一般情况下
src 目录下放java程序的源代码(.java)


bin 目录放.java文件编译后的.class(字节码文件)

14.HelloWorld.java文件中写一个带到package(包名)的类HelloWorld并编译运行
创建并打开一个java文件:
vi src/HelloWorld.java
编译这个java源文件
javac -d bin src/HelloWorld.java
运行这个java类
java -cp bin HelloWorld

   注意:-d表示编译的时候生成和类中的package相对于的目录结构,然后把编译完成的.class文件放到这个目录中.如果这个类中没有类名,那么就不生成这个包目录了。
        -cp表示在运行这个java类的时候去bin目录下找这个java类所在的.class文件进行类加载
         cp就是classpath的意思
         
        我们运行的时候是运行的java类,这个java类在相应的.class文件中,例如这个例子中,我们运行的是HelloWorld这个java类,这个java类是在HelloWorld.class文件中的,所以我们运行的时候HelloWorld.class文件中的HelloWorld这个java类:java -cp bin HelloWorld

15.HelloPackage.java文件中写带到package(包名)的类HelloPackage并编译运行,包名为:com.briup.chap01
vi src/HelloPackage.java

javac -d bin src/HelloPackage.java
java -cp bin com.brup.chap01.HelloPackage
        
    jar -cvf abc.jar com

   注意:一个类的package是类的名字的一部分,完整的类名是 包名.类名

   例如:一个类MyTest的package为com.briup.test,那么将来这个这个类将来编译成为的MyTest.class文件一定要放在com/briup/test这样的目录下面才能运行,目录结构要和包结构一样.

16.java中的注释comments

java中有三种注释方式
//    单行注释

/* test */  多行注释

/** test */ javadoc注释

/**
  可以描述类的作用
  @author 类的作者
  @version 类的版本
  @param 方法的参数
  @return 方法的返回类型
  @exception 方法抛出的异常
  @see 另外参照...
  @since 从什么时候开始使用的
*/
例如:

package com.briup.test;

/**
 * this is my CommentTest Class
 *@author wood
 *@version 1.0
 *@since JDK1.6
 * */
public class CommentTest{
//表示这个人的名字 
private String name;

/**
*this is a age of person
*
* */
private int age;

/**
*@param name :a name of person
*@exception null
* */
public void setName(String name){
this.name = name;

}
/**
*@return 没有返回类型
* */
public String getName(){
return this.name;

}
public static void main(String[] args){
/*
CommentTest ct = new CommentTest();
ct.setName("tom");
String temp = ct.getName();
System.out.println(temp);
*/
}

}

javadoc -d ./doc CommentTest.java

如果想显示出author和version
javadoc -d ./doc -author -version CommentTest.java