01认识Java

目标: 1. Java背景知识介绍; 2. Java开发环境设置; 3.
编写、编译、运行Java程序的过程;


    引言:

1. Why(为什么要学习Core Java)? 

       Core Java是Java语言的基础,其它Java技术均是构建在Core Java基础之上。 
       2. What(Core Java课程学习什么)?

       1) Java编程语法(字符集、条件语句、循环语句); 
       2) Java编程语言面向对象的概念;封装 继承 多态 
       3) IO流;
       4) 多线程;
       5) 网络;

第一章: Getting Started(19)

JDK主要包括内容:

          class的修饰符只能是public default abstract final
		
          javac:将.java文件编译生产.class文件
		
          java:运行.class文件 只需要提供文件名,不需要提供.class后缀 a. 
          Java虚拟机:负责解析和执行Java程序。Java虚拟机可运行在各种平台上;
			
          可以将生成的.class转换成特定操作系统所识别的二进制文件
			
          java虚拟机不能跨平台 b. JDK类库:  
          提供最基础的Java类及各种实用类。java.lang, java.io, java.util, 
          javax.swing和java.sql  
                                    
          包中的类都位于JDK类库中。
 	    java.lang: 提供利用 
          Java 编程语言进行程序设计的基础类。最重要的类是 
          Object(它是类层次结构的根)和 
          Class(它的实例表示正在运行的应用程序中的类)。java.lang的夹包 
          默认直接被导入.
	    java.io: 
          Java的核心库java.io提供了全面的IO接口。包括:文件读写、标准设备输出
          等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,
          或者从输入流读入
           	    java.util:包含集合collection 
          类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成
          器、随机数生成器和位数组、日期Date类、堆栈Stack类、向量Vector类等)
          。
	    c. 开发工具:  
          这些开发工具都是可执行程序,主要包括: javac.exe         编译工具; 
                           	   java.exe          
          运行工具; javadoc.exe       生成JavaDoc文档的工具 jar.exe           
          打包工具 等。 我的电脑---》属性---》高级环境设置----》path
      		
          PATH:c:/progress file/java/jdk1.6.0_26/bin
		
          javac.exe  java.exe 
		
          这几个java相关命令本身并不被window识别,需要将存在命令路径添加到pat
          h路径中.换言之 window可以识别javac编译命令和java运行命令 1. 
          设置Java开发环境; 

          a. 获取J2SDK;
	
          j2sdk是JAVA的开发环境包它包含JDK(开发工具包)和JRE(运行时环境包)
	
          JDK包含JRE
	
          JDK是开发人员必装软件,除了拥有jre相关内容,还拥有java,javac等开发工
          具
	     
          换言之,只有安装了jdk才可以对编写好的java程序进行编译和运行
	
          JRE是客户端运行时必装软件,拥有jvm虚拟机和java相关的jar类库
	
          j2sdk:在1.4版以前称为jdk,可以理解j2sdk是jdk的升级版本,所以我们只要
          安了j2sdk即可,JDK就没必要了
         b. 安装J2SDK; c. 
          设置环境变量:

             JAVA_HOME: 
	 
             起到变量作用,变量值是jdk的路径.一旦有人使用路径
	 
             直接提供变量就可以找到jdk的路径 1) 
             作用:简化其它变量设置过程中的内容输入。在变量设置过程中有可能要
             多次使用到JDK的安装路径,如何简化 多次输入过程? 
             可先行将JDK的安装路径定义为一变量,以后凡使用到JDK安装路径的地方
             均使用该变量 进行替换。
		 
             当有多个版本的jdk存在时,只需要制定java_home指向不同的jdk版本.使
             用时引入不同的java_home
		 
             就可以改变jdk版本.不需要更改path内容.                          
             path:       
	 
             如果想要使用javac,java等命令,需要将该命令所在的路径
	 
             添加到path路径中.
             1) 作用:指定执行外部命令时找寻对应可执行文件的路径范围; 2) 
             设置:
                i.  windows	
             [开始]->[控制面板]->[系统]->[高级]->[环境变量]->[新建环境变量]命
             令,就可以创建环境变量path

                    path	%JAVA_HOME%\bin;%path%
                    
                    重启命令行窗口,变量即生效。window系统对path命令的大小写不
                    敏感。echo %path%、echo %Path%、 echo 
                    %PATH%均显示设定的path变量值。

		e.g 
                    如果当前用户下存在.class文件
	 	
                    在classpath也指定的.这个当前路径
	 	
                    可以直接使用java 类名称来运行该.class文件
	 	
                    如果当前用户下不存在.class文件,而.class文件位于 
	 	
                    当前的bin目录下。在classpath中指定了bin路径(-cp bin)
	 	
                    可以直接使用java 类名称来运行该.class文件
	 	
                    如果在classpath中没有指定./bin路径。可以使用
	 	
                    java -classpath(或者 -cp bin)来运行该.class文件 
                    1) 作用:代表Java类的根路径。java命令会从classpath中寻找所需
                   		 的Java类, Java编译器编译Java类时,也会从 classpath中寻找所需的Java类。
                   		 classpath的默认值为当前路径。 
                    2) 设置: i.  windows	[开始]->[控制面板]->[系统]->[高级]->[环境变量]->[新建环境
                  	  变量]命令,就可以创建环境变量classpath
                  	                          
                    重启命令行窗口,变量即生效。window系统对classpath命令的大
                    小写不敏感。echo %classpath%、 echo %ClassPath%、echo 
                    %CLASSPATH%均显示设定的classpath变量值。


          2. 理解Java语言特征;

          
          Java语言包括语法规则和语法规则的实现。Sun公司对Java语言有自己的一份
          参考实现:JDK。

          a. 编程语言:语言本质即规则: 
          字符集、词法规则、句法规则(条件语句、循环语句等); 桌面应用程序  
          拥有图形化用户接口的软件; 服务器应用程序:通过浏览器访问运行;

          b. 开发环境:开发程序,不管是桌面应用还是服务器应用,均需要JDK的支持。 
          
          c. 应用环境:运行时需要JRE的支持。
	 
          为什么java需要jre呢,因为java需要跨平台,也就是在什么机器上都能运行良
          好!
	 
          java源文件会被编译成一个中间文件.class文件,这个文件不能像.exe文件那
          样直接运行,而是被jre翻译成当
	 
          前机器运行时需要的程序,之后在运行。所以没有jre,那么.class文件就无法
          转换成可运行的程序,所以脱离jre,java不可能运行 
       	  d. 部署环境:服务器应用程序需部署运行在服务器应用程序上,服务器本身也是一个Java程序 
          用Java语言编写的服务器应用程序部署运行时也需要Java语言的支持;

       3. 为什么发明Java? 

          为什么发明了java,换而言之,java有哪些优点呢?

          a. 提供一个解释环境 
          1) 加速开发: 
          Java当初目的是开发适用于智能化电子消费设备上的软件,它是基于C++语言,但做了简化,
          		能加速 软件的开发过程;
          2) 一次编译到处运行: 跨平台;
          3) 多线程:多线程编程的简单性是Java成为流行的服务器端开发语言的主要原因
          之一

          b. 提供一个比较容易的方式编程 
          1)  更健壮:没有指针(引用)、没有内存管理; 
          2) 纯粹的面向对象的编程:在Java中认为一切均是对象,对象有属性以及改变属
       		   性值的方法。通过Java编程围绕 着构建对象的模板、实例化对象、调用对象的方法和属性等来进行。 
       		   封装 继承 多态
      c. 那么如何实现上面这些呢? 
          虚拟机JVM提供一个解释环境,让java代码可以运行。 
          垃圾回收机制让程序员无需在代码中进行内存管理。 
          代码安全校验保证java代码的安全性.

       4. 理解Java虚拟机的特征;

          Jvm是什么?简称java 虚拟机(java virtual machine),是用软件来模拟一个虚拟的环境。
		我们用java编写的源程序经过编译以后生成字节码文件,Jvm提供了一个解释运行 java字节码文件的环境只要		在	不同操作系统上安装了jvm后,就能对同一个java程序进行解释运行,这就java的跨平台,一次编译,到处运行。 
     将生成.class转换成机器或者(操作系统)所识别的二进制文件

          

       5. 描述垃圾收集的概念;

          什么叫垃圾回收: 
          1) 垃圾:无用对象所占据的内存空间; 
              垃圾回收:将无用对象所占据内存空间进行回收的过程;

          为什么要垃圾回收? 
          1) 对象创建,需要占用内存空间,在一个程序运行过程中要创建无数个对象,如果
         		 对象永久占用内存,那么内存很快会 消费光,导致后续对象无法创建或者出现内存不足的错误。
         		 因此必须采取一定措施及时回收那些无用对象的内存,这 样保证内存可以被重复利用。

          C++等程序由程序员显示进行内存释放,这样有可能: 
          1)  忘记内存释放,导致无端的内存占用; 
          2)  释放核心类库占用内存,导致系统崩溃;

          Java中垃圾回收处理: 
          1) 由虚拟机通过一个系统级的垃圾回收器线程自动完成,不会忘记也不会释放错 ,系统更加稳定;

          Java中垃圾回收处理特点:              
          1) 由虚拟机通过垃圾回收器线程自动完成; 
          2) 只有当对象不再被使用,它的内存才有可能被回收;如果虚拟机认为系统不需
          		要额外的内存,即便对象不再使用,内存 也不会回收;cpu是否空闲,内存是否紧张
          3) 程序无法显示迫使垃圾回收器立即执行垃圾回收,可以通过java.lang.Syste
          		m.gc()/java.lang.Runtime.gc()建议 虚拟机回收对象;



       6. 阐述Java平台代码安全实现策略;

          
          Java虚拟机为Java程序提供运行时环境,其中一项重要的任务就是管理类,管
          理类的加载、连接和初始化;

          1) 加载:查找并加载类的二进制文件(class文件) 
          Java虚拟机可以从多种来源加载类的二进制数据,包括: 
          a. 从本地文件系统中加载.class文件,最常见;
          b. 通过网络下载.class文件; 
          c. 从zip,jar或其他类型的归档文件中提取.class文件;
          d. 从一个专有数据库中提取.class文件;
          f. 把一个java源文件动态编译为.class文件;

          2) 连接: 
          a. 验证:确保被加载类的正确性(有正确的内部结构,并且与其他类协调一致); 
          为什么要验证:  
                      Java虚拟机不知道某个特定的.class文件到底是由正常的Java
                      编译器生成的,还是黑客特制的。类的验证能提 
                      高程序的健壮性,确保程序被安全地执行。

                      类验证内容:
                      . 代码和jvm规范一致 . 代码不能破坏系统的完整性 . 
                      没有堆栈的上溢和下溢 . 参数类型是正确的 . 
                      类型转换的正确的

          3) 初始化:给类的静态变量赋予正确的初始值;

       7. 定义类、包、applets和应用程序;

          1) Java的工作方式:

             源代码: 编写Java源代码文件
             编译器: 用编译器编译源代码。编译器会检查错误,如果有错就要改正才能产生正
             确的输出。
             输出: 编译器会产生字节码。任何支持Java的装置都能够把它转译成可执行的内容。
             			编译后的字节码与平台无关。
             Java虚拟机: 可以读取与执行字节码。
             		加载指定类,开始执行它的main方法,然后一直运行到main的所有程序代码 结束为止。

         2) Java的程序结构:

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

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

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



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

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

               结构: i.  类的声明语句,例: public class HelloWorld ii. 
               类的内容语句,用大括号括起来: (1) 属性; (2) 方法:                       


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

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

               ii. 方法体,用大括号括起来: (1) 属性; (2) Java语句;   

            d. Main方法:

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

         3) 剖析类:     

            public class FirstJavaProgram{ public static void main(String[] 
            args) { System.out.println("Hello Java, I am your fans!"); } }
	
            window+r—>cmd—>(位于c盘)—>的D:(切换到d盘)
	cd 
            java(进入到java3目录)—>
	cd 
            chap01(进入到chap01目录)->
	cd src(进入到src目录)->
	
            dir(查看当前下是否有HelloWorld.java文件)
	执行
	
            javac HelloWorld.java 
	如果没有报错,表示编译通过
	
            如果编译通过,执行java HelloWorld 运行helloworld程序

注意事项 :

            1.允许构建的类中不存在public修饰的class,如果没有public

            修饰的类,此时在其中构建main方法.也能作为程序入口
		
            public修饰的类必须和当前文件名称一致(大小写必须一致)
		
            helloworld.java   public class HelloWorld 报错).
	
            2.一个java文件中只允许有一个public修饰的类,并且该类的名称
		
            必须和当前文件名称一直.类的名称与文件必须大小写一致.
		
            允许类名称小写,只要和文件名称一致.允许有多个普通类
	
            3.public static void main(String args[]){} 
            程序的入口所有的方法的构建   
		
            public去掉 编译通过,运行时发现找不到main方法.程序不能运行
		
            static去掉 编译通过,运行时发现找不到main方法.程序不能运行
		
            void去掉  编译不通过  报方法缺少返回类型
		
            public和static位于可以置换,因为都是修饰符.
		
            其他内容的位置都不能置换,必须满足方法构建的顺序
		
            修饰符 + 返回类型 + 方法名(参数类型 参数名称…){}
		
            main名称不一致, 编译通过,运行时发现找不到main方法,程序不能运行
		
            main可以和后面()存在空格,jvm仍然理解成main方法
		
            String类型发生改变,编译通过,运行时发现找不到main方法,程序不能运行
            
		
            String类型大小写敏感.不能随意更改,编译不通过.
		
            args名称可以发生改变,jvm仍然理解成main方法
		
            []位置可以发生改变,可以位于String后面或者args后面,但是不能不写
		
            如果不写,编译通过.jvm找不到main方法
		
            main方法在一个类中只能出现一次
	4.package import public 
            class 的顺序
		
            package最先并且只能有一个,但是可以不位于第一行
		
            import必须紧跟package,可以有多个
		
            java.lang包是默认导入的jar包,换言之这个包下面的所有类默认被导入.

public class必须位于package以及import之后,但是和其他class没有顺序

            javac:将.java文件生产.class文件.如果.java中包含package
  		
            -d .选项可以将.java文件中制定的package内容生成对应
  		
            目录.e.g  HelloWorld.java—>package com.briup.chap01;
  		
            -d . 可以在当前目录下生成com目录,com目录中在生成briup目录  
  		
            briup目录中再生成chap01目录.此时chap01目录中包含生成好的
  		
            .class文件如果-d 
            bin选项,不在当前目录下生成对应的package制定目录.
  		
            而是在bin目录下生成对应的package制定目录
	
            src目录存放.java文件
	bin目录存放.class文件

       8. 编码、编译以及运用Java应用程序;
   补充:jar命令参数:
       
       jar命令格式:jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名...
       
       其中{ctxu}这四个参数必须选其一。[v f m e 0 M i 
       ]是可选参数,文件名也是必须的。
        -c  创建一个jar包
	
       -t 显示jar中的内容列表
	-x 解压jar包
	
   -u 添加文件到jar包中
	-f 指定jar包的文件名
	
   -v 生成详细的报造,并输出至标准设备
	
   -m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一
       设置)
	-0 产生jar包时不对其中的内容进行压缩处理
	
       -M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置
	
       -i    为指定的jar文件创建索引文件
	
   -C  表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值