第一章:什么是Java?为什么学Java?Java课程学什么?

chap01

 

1.java平台版本

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

  Standard Edition(标准版) J2SE 包含那些构成Java语言核心的类。

比如:数据库连接、接口定义、输入/输出、网络编程

  Enterprise Edition(企业版) J2EE 包含J2SE 中的类,并且还包含用于开发企业级应用的类。

比如:EJB、servlet、JSP、XML、事务控制

  Micro Edition(微缩版) J2ME 包含J2SE中一部分类,用于消费类电子产品的软件开发。

比如:呼机、智能卡、手机、PDA、机顶盒

 

2.软件开发中使用的开发工具

  SDK: software development kit  软件开发包 函数库或者工具等

  JDK  java development kit   是面向开发人员的,java开发工具

  JRE  java runtime enviroment java运行环境,是面向应用程序使用者的

  注意:JDK安装后一般都会包含JRE的

  API application program interface 应用程序编程接口

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

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虚拟机可运行在各种平台(OS)上

  一次编译 多次运行

  b. JDK类库(API):  提供最基础的Java类及各种实用类。java.lang, java.io, java.util, javax.swing和java.sql包中的类都位于JDK类库中。src.zip

  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包

  jre :

    bin : java 命令

    lib : rt.jar  ---->.class 文件组成 (src.zip 包结构相同)

7.java的特点:

  面向对象: 万物皆对象

  简单性:(相对应C和C++来讲)java不需要程序员操作内存

  跨平台:一次编译,到处运行 (JVM和平台一一对应 )

  多线程:其他语言的多线程一般是系统级别的,java的多线程是语言级别的

  动态编译:(相对应C或者C++来说),在一个项目中,如果需要修改一个java文件的话,那么就修改这一个文件就行了,其他的java文件不需要动

  java 应用程序 ---->多个.java 文件组成 -----> 多个类

  ----->main() 执行程序。

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运行

  运行: 类加载-->字节码验证-->JIT运行

 

  字节码验证的内容:

  代码要符合JVM的规范 语法

  代码破坏计算机的系统或者硬件

  栈不能溢出  内存 

  方法的参数类型要正确(java 强类型语言 js:弱类型语言)

  类型转换要正确

 

  类加载:  双亲委托机制

    把我们写好并编译成的.class字节码文件从硬盘中加载到内存

   

    JVM使用类加载器来完成类加载的过程

  类加载器有:

  类装载器:(分为3步)1》2》3

1、启动类装载器:bootstrap class loader

从jdk的安装目录下  jdk/jre/lib/rt.jar

rt.jar 是个包,放的是Java作为开发环境的所有的库

2、扩展类装载器:extensible class loader

从jdk的安装目录下 jdk/jre/lib/ext/*.jar

jdk下的所有的.jar 文件

3、系统类装载器:system class loader

$CLASSPATH

你所配置的classpath  

   

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

  JIT运行:Java程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块运行的特别频繁时,会把这些代码认定为“热点代码”(Hot Spot Code)。为了提高热点代码的执行效率,在运行时,虚拟机会把这些代码编译成本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器。

10.java环境变量的设置

   JAVA_HOME CLASSPATH PATH

   windows:

   JAVA_HOME:JDK安装的目录路径

   C:\Program Files\Java\jdk1.6.0

   1. 配置信息

   2. 软件依赖环境变量

   3. jdk1.7   jdk8

 

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

   PATH:JDK安装目录里面的命令目录

   ...;%JAVA_HOME%\bin

   unix:

   vi ~/.bashrc

  

   在文件中的最后一行下面配置:

   export JAVA_HOME=..../jdk1.6.0_32

   export CLASSPATH=.

   export PATH=$JAVA_HOME/bin:$PATH

/opt/jdk1.8.0_74/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

 

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

 

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

  java -version

11.Java的程序结构:

 a. 源文件:.java

   包含Java代码(按java语法规则编写的内容)的文件;

   特征:

  1. 以java作为后缀;

   ii. 可以包含多个类/接口;

   iii.名称与类名(只包含一个类/接口)或public修饰的类/接口(包含多个类/接口)同名;

   结构:

  1. 包的声明语句(可有可无,如有只能有一行,且位于最前面);

   ii. import语句(可有可无, 可有多行,紧跟着包的声明语句);

   iii.类的声明语句();

b. 类:

   Java代码组织的单位, Java代码都是以一个个类形式组织的。用Java语言编写程序其实就是编写一个个类;

   一个类里的语句内容用大括号括起来,一个类里带有零至多个方法。

   结构:

  1. 类的声明语句,例:

       public class HelloWorld

   ii. 类的内容语句,用大括号括起来:

       类中包括:

       (1) 属性

       (2) 方法                    

c. 方法:

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

   结构:

  1. 方法的声明语句,例:

       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 Java, I am your fans!":        要输出的字符串内容;

;                                每一行语句必须用分号结尾

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

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

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

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

  package

  1.最终会是以文件夹的形式体现出来(有什么包,就必须有什么文件夹,运行的时候.class文件必须在这个文件夹下面)

  1.   .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  

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

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值