初识 Java SE

原创 2017年10月10日 15:07:10

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

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

       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时:在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还在领悟中。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wrs120/article/details/78192857

JavaSE教程-01初识Java

对计算机做一个已基本介绍,以及初识Java
  • baidu_37107022
  • baidu_37107022
  • 2017-03-28 09:58:36
  • 491

第一章 初识Java

什么是Java语言 Java是于 1995年 由Sun公司推出的 极富创造力的 面向对象程序设计语言 它由Java之父——Sun研究院院士 詹姆斯·高斯林(James Gosling)博士...
  • zsg6221827
  • zsg6221827
  • 2017-03-07 12:11:51
  • 382

第一章 初识JAVA学习总结(15-6-16)

关键点:计算机语言的区别;    高级语言编译程序的方式;  算法----流程图;   算法的基本特征;   程序设计的五个步骤         今天我们开始了新一个阶段的学习。我们正式开始学习JA...
  • BFQsong
  • BFQsong
  • 2015-06-16 20:16:10
  • 347

《初识Java微信公众号开发》源码

  • 2016年12月31日 22:22
  • 801KB
  • 下载

JAVA学习第一课(初识JAVA)

PS:退ACM集训队了,自己也疯玩了两天,后天就开学了,就正式大二了,该收收心好好学习啦                                                        ...
  • u013497151
  • u013497151
  • 2014-08-30 14:51:03
  • 2464

初识微信公众号开发

微信公众号开发
  • woshimuyi1025
  • woshimuyi1025
  • 2016-09-03 20:49:12
  • 528

Java SE 源码 Java SE 源码

  • 2010年08月02日 00:41
  • 17.27MB
  • 下载

java SE 1.6.zip

  • 2011年10月31日 08:12
  • 25.23MB
  • 下载

MySQL学习1:初识MySQL

一什么是数据库?        数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创 建,访问,管理,搜索和复制所保存的数据。    ...
  • erlian1992
  • erlian1992
  • 2016-05-04 20:16:29
  • 6757

大牛笔记:MySQL菜鸟初识

爱学习的橙子 2017-03-10 09:15 MySQL基础知识点罗列,帮助理清思路,主要包含安装、基本操作、MySQL约束、C/C++库使用等知识点。 Ubuntu下安装MySQL 按照顺序...
  • u011277123
  • u011277123
  • 2017-03-30 17:33:58
  • 271
收藏助手
不良信息举报
您举报文章:初识 Java SE
举报原因:
原因补充:

(最多只允许输入30个字)