初识 Java SE



这里写图片描述Java SE
       JAVA:是一种跨平台的面向对象的程序设计语言,而用JAVA编写的软件运行在JAVA平台上,JAVA平台分(运行在各种终端【PC,服务器】的系统软件)为3种:

  • Java SE(旧称J2SE):标准版,用于开发桌面应用软件(PC机上开发),
  • Java EE(旧称J2EE):企业版,开发分布式的网络程序 (服务器端开发),包含于JAVA EE
  • Java ME(旧称J2ME):微缩版,用于开发嵌入式系统(手机和PDA的编程),包含了Java SE的核心类

Java SEJava的基础,它包含Java语言基础、JDBC数据库操作、I/O(输入/输出)、网络通信、多线程等技术,Java SEJ2SE)的结构如图所示。




1.3 J2SE平台结构


    Java平台包括:Java虚拟机和Java应用程序编程接口(API),Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,Java平台嵌入了几乎所有的操作系统。
       一个java文件被执行的过程:
                     这里写图片描述

  1. 程序员通过编译软件将源代码.java文件编译成.Class字节码文件
  2. java虚拟机根据设定的class path路径找到对应的.class文件,通过校验,解释,编译器翻译成特定机器上的机器码
  3. 交给操作系统控制硬件执行

       其中运行时JVM所处的位置:
              这里写图片描述
       JVM实现了JAVA字节码和计算机操作系统之间的通信,不同的平台有不同的JVM,屏蔽了底层运行平台的差异,所以说“一次编译,随处运行”


内存
                     这里写图片描述
以下面代码为例,分析内存变化(分析内存是从main()入手):

class Point {
    double x,y,z;
    Pint (double _x,double _y,double _z) {
        x = _x;
        y = _y;
        z = _z;
    }

    void setX(double  _x) {
        x = _x;
    }

    double getDistance (Point p) {
        return (x - p.x)*(x - p.x) +(y - p.y)*(y- p.y) +(z- p.z)*(z - p.z) ;
    }
}

public class TestPoint {
    public static void main (String[] args) {
        Point p = new Point (1.0,2.0,3.0);     //@1
        Point p1 = new Point (0.0,0.0,0.0);    //@2
        System.out.println(p.getDistance(p1)); //@3 
        p.setX(5.0);                           //@4
        System.out.println(p.getDistance(new Point(1.0,1.0,1.0))); //@5
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 执行语句@1时:在new调用构造函数时,先在栈中给变量_x,_y,_z分配空间,将值传给这些变量,然后这些变量再给x,y,z赋值

这里写图片描述

  • 语句@1执行完后:_x,_y,_z变量消失

这里写图片描述

  • 语句@2执行完后:

这里写图片描述

  • 执行@3时:return时也会在栈中分配空间,p1的指向地址赋值给p,所以指向同一对象

这里写图片描述

  • 语句@3执行完后:所有的临时变量消失

这里写图片描述

  • 执行@4时:改变x的值

这里写图片描述

  • 语句@4执行完后:

这里写图片描述

  • 执行@5时:

这里写图片描述

  • 语句@5执行完后时:(声明的临时变量消失,声明的对象没变量引用了,适当时垃圾回收机制会把new出的对象回收,只是曾经存在过)

这里写图片描述

  • 最后main()方法执行完后,堆栈回归原始

线程

       谈到线程,首先大家可能想到的是自考中的线程和进程,线程是动态的,进程(如:.exe文件)是静态的。线程可以理解为:一个程序内部的顺序控制流

分类:

  • 单线程:一个应用程序中只有一个线程流指向;
  • 多线程:同一个应用程序中有多个顺序流同时执行

创建:

  • extends Thread类
  • implements Runnable接口

       每个线程用run()来完成操作,称为线程体,通过调用Thread类的start()来启动线程;JVM启动时就会启动由main()定义的线程,成为主线程。执行过程是这样的:
       这里写图片描述
多线程:
       这里写图片描述
       使用线程时遇到最多的情况就是死锁:无限等待资源
       这里写图片描述


IO流

       之所以成为流,是因为在传文件是以“水流”的形式传输。流是一组有顺序的,有起点和重点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输的特性将流抽象为各种类,方便更直观的进行数据操作。

分类:

分类 类别
方向 输入流 reader
输出流 writer
单位 字节流  
字符流
功能 字节流 InputStreamReader
处理流 BufferedReader:缓冲,关闭时要flush()
DataInputStream:以别的形式输出

容器
       我们之前用到最多的也是大家较熟悉的容器就是数组了,但是数组大小需要提前被确定,且类型也确定;java中未来方便对大量的对象引用进行管理,常常将同类的引用放置在同一数据容器中。在java中,有一个类专门用来存放其它类的对象,这个类叫容器,或集合,集合就是将若干性质相同或相似或相近的类对象组合在一起而形成的一个整体。
这里写图片描述


总结
       对于Java这只是个入门,最基础的东西,虽然基础,但是这是接触的新的一门编程语言,也是如今比较流行的一种语言,相信打好基础,对以后的学习还是很有帮助的,java还在领悟中。。。


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页