Java第三天

Posted zjw19971001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java第三天相关的知识,希望对你有一定的参考价值。

第一部分:什么是java

    Java技术既是一种编程语言,也是一个平台。

    1.1:java是编程语言:

        Java编程语言是一种高级语言,可以用以下所有流行语来表征:

        简单,面向对象,多线程,高性能,强大的,安全

 

        在Java编程语言中,所有源代码首先以纯文本文件编写,并以.java扩展名结尾。这些源文件然后由javac编译器编译生成.class文件。一个.class文件不包含的代码是原产于你的处理器; 它代之以字节码 - Java虚拟机1(Java VM)的机器语言。然后,java启动程序工具将使用Java虚拟机的实例运行您的应用程序。

 

        java 面向对象的语言:以面向对象的形式进行编程。

        java语言  : 数据结构 + 算法 + 内存管理

                数据结构:数据在内存的分布方式

                算法:解决问题的方式

                内存的管理:内存的划分和释放

 

                 知识点速记: java语言就是用来操作内存中的数据。

                      : java语言需要先编译然后再运行。

 

    1.2:java 是一个平台 :

        平台: 是在程序运行的硬件或软件环境,大多数平台可以被描述为操作系统和底层硬件的组合b

        流行的平台: window...Mac OS

        java平台有两个组件:

            java虚拟机 和 java应用程序接口

 

第二部分: java中包含哪些东西

    java = javaSe + javaEE + javaME

   

 

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

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

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

 

    知识点速记:

        jdk = jre + java提供小工具

 

 

第三部分: java可以做什么

 

    javaSe桌面应用:(逗你玩)

    javaEE企业级网站项目(实战项目演示)

    javaME手机应用

 

第四部分: java的安装配置

    1,java 的下载:SUN公司的java 已经被oracle公司收购。

        : http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

        Java SE Development Kit 8u172部分 勾选Accept License Agreement

        然后选中所需要版本进行下载。

    2,安装jdk ,然后安装jre

    注意:安装目录不要有中文,不要有空格。

 

    3,配置环境变量:

        window : 1.1:新建JAVA_HOME = jdk安装目录

             1.2:新建classpath:.

             1.3:修改path : 在path的最前面添加java的工具路径,

                 %JAVA_HOME%/bin;

 

        ubuntu : 在登陆用户的家目录下面:

 

            配置环境变量(文件: .bashrc  这文件的最后一行开始配置)

 

            export JAVA_HOME=/home/briup/jdk/jdk1.8.0_172

            export CLASSPATH=.

            export PATH=$JAVA_HOME/bin:$PATH

 

            配置完了之后,需求让文件立刻生效: source .bashrc

 

        mac  : 请参考 https://www.cnblogs.com/dingzhijie/p/7016397.html

 

第五部分: 安装完成以后的java

 

   bin : 存放可执行文件

    javac : 编译.java文件 变成.class文件

        cmd : javac Hello.java

    java  : 运行.class文件

        cmd : java Hello

    javadoc:生成java文档

        javadoc   HelloWorld.java

    jar    : 把 .class 文件 变成jar包。

        jar -cvf hello.jar HelloWorld.class

    db  : java提供的数据库

    include : C语言的头文件内容

    jre : java 的运行环境

    lib : java 所用的基本jar包

 

    知识点速记:

        java 内部有些东西是用C实现的。

 

第六部分 : java的优点

1,简单性 : 面向对象变成,写代码变得非常简单。

2,跨平台 : 一次编译,到处运行。(jvm)

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

    线程 : 一个进程下 其他多个任务同时完成

    进程 : 一个应用 运行 会在内存中开辟一块独立的内存空间

4,动态编译: 在一个项目中,如果需要修改一个java文件的话,那么就修改这一个文件就行了,其他的java文件不需要动

 

5,内存管理方案,gc:垃圾回收机制 : 指的是堆中的内存。

 

    如果被引用数为0 就是 垃圾

 

    java中有一个专门负责JVM中垃圾释放的线程。

    垃圾的定义:在堆中的对象,没有任何引用指向这个对象,那么这个对象就是垃圾。

     : 没有引用的内存节点

 

注意:垃圾回收有自己的算法,我们是不能控制垃圾回收机制的,虽然有和垃圾回收相关的方法:java.lang.System.gc()  java.lang.Runtime.gc(),但是还是无法控制垃圾回收机制

 

知识点速记:java 一次编译,到处运行。

 

第七部分: java的helloworld例子

    编写java程序.HelloWorld.java

 

    知识点速记:java代码必须写在方法中,方法必须写在类中,有主方法的类是可以运行的。

 

        类

           方法

            int a = 10;

            syso(a);

          

       

第八部分: java代码的类加载机制

   把Hello.class字节码文件中

   Hello类加载到内存的过程

  

   java Hello就会触发java类加载

 

    类加载:双亲委托机制

 

    启动类加载  老子(孔子爹)

     /jre/lib/rt.jar

    扩展类加载  孔子

     /jre/lib/ext/*.jar

    本地类加载  孔融

      classpath:.

    什么时候触发类加载?

      java Hello

   

    为了避免类的重复加载

 

 

    网络类加载

 

    思考:为啥要存在这么多类加载?

 

    双亲委托机制加载类的流程:

        1,执行java HelloWord 命令时候开始类加载(得到加载类的指令)

        2,本地类加载器接到 加载HelloWorld类的指令,但是不做处理,反馈给上级 扩展类加载器

        3,扩展类加载器得到 加载HelloWorld类的指令,但是也不做处理,反馈给上级 启动类加载

        4,启动类加载器得到 加载HelloWorld类的指令,直接处理,进行类加载。加载rt.jar中的类,但是没有加载到HelloWorl的类,接着启动类加载器又把加载 HelloWorld类的指令 向下交给扩展类加载器进行完成

        5,扩展类加载器 得到上级分配的任务:加载HelloWorld类,立刻加载jre/lib/ext/*.jar,但是也没有加载到HelloWorl的类,接着 扩展类加载器又把加载HelloWorld类的指令 向下交给本地类加载器进行完成。

        6,本地类加载器 得到上级分配的任务:加载HelloWorld类,立刻执行加载ClassPath下的类,如果加载到了HelloWorld类 调用main方法执行,如果没有加载到HelloWorld类就报异常,ClassNotFindException 类找不到。

 

 

        扩展:可以自己动手把一个class文件打成jar包(jar –cvf  newname.jar king.class)放到/opt/jdk1.7.0_05/jre/lib/ext/下,然后 运行jar包中的类,看是否可以运行成功。

 

第九部分:简单了解java虚拟机

 

        进行类加载,字节码验证,栈不能溢出,方法的参数类型需要正确,类型转换需要正确。

        把字节码转换为机器码进行运行。

以上是关于Java第三天的主要内容,如果未能解决你的问题,请参考以下文章

Java第三天

java面试第三天

java基础第三天_数组

Java基础第三天_数组

Java学习第三天

Java第三天