初识java_初识 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平台包括:Java虚拟机和Java应用程序编程接口(API),Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,Java平台嵌入了几乎所有的操作系统。

一个java文件被执行的过程:

FhQB3to5lxxFA9FK_fDWwJewaM9j

程序员通过编译软件将源代码.java文件编译成.Class字节码文件

java虚拟机根据设定的class path路径找到对应的.class文件,通过校验,解释,编译器翻译成特定机器上的机器码

交给操作系统控制硬件执行

其中运行时JVM所处的位置:

FlfDccNYoNE2LVGebgGg5wZC8VjA

JVM实现了JAVA字节码和计算机操作系统之间的通信,不同的平台有不同的JVM,屏蔽了底层运行平台的差异,所以说“一次编译,随处运行”

内存

Fpm_qt4jWAyKBs8BvORL3wcgV1gy

以下面代码为例,分析内存变化(分析内存是从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赋值

FuMvaIBQ_ktUsrQnBQjHXkdddePY

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

FoD8bBCSZSkp4jm6s0u7amQFD1dB

语句@2执行完后:

FvExOLenaGVMWHDg1wJAdrkeIIUZ

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

FnhCymCPVxOaLhca69L0prtr9-AT

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

Fh9rRp7i4pNKyKKBnCTAsu1lJSuO

执行@4时:改变x的值

FvM80BFFHzvXfwDO4OYM-b1K02Yb

语句@4执行完后:

FoI6vkNIGAXQVU9FbWs2B9Rcqdwj

执行@5时:

FqKd-xQBZSvto_JTGf4XJVzF2nJt

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

FqRa7232_d37A7v7Ue1amoZV5cvJ

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

线程

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

分类:

单线程:一个应用程序中只有一个线程流指向;

多线程:同一个应用程序中有多个顺序流同时执行

创建:

extends Thread类

implements Runnable接口

每个线程用run()来完成操作,称为线程体,通过调用Thread类的start()来启动线程;JVM启动时就会启动由main()定义的线程,成为主线程。执行过程是这样的:

FqwwBiDgLxy6RjWuoaG8U7_kVreB

多线程:

FlmxRH1D_lsUiXGWzNMy3yiDvQzc

使用线程时遇到最多的情况就是死锁:无限等待资源

FgfDT3spHxnONG65vM7wlqlPeEYG

IO流

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

分类:

分类

类别

方向

输入流

reader

输出流

writer

单位

字节流

字符流

功能

字节流

InputStreamReader

处理流

BufferedReader:缓冲,关闭时要flush()

DataInputStream:以别的形式输出

容器

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

FtgAUA1OtNHbkkLmlYTAV0w3LX-k

总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值