当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > Java开发环境搭建与Java基础知识

Java开发环境搭建与Java基础知识 时间:2018-09-25      来源:未知

一、简史

Java 诞生于 SUN (Stanford University Network) Microsystems Inc. Sun 公司从1995 年 Java 语言诞生,1996年发布 JDK 1.0 版本,随后又发布了 JDK1.1, JDK1.2,JDK1.3, JDK1.4, JDK5.0,JDK6 等几个版本, 2009 年4 月被Oracle 收购, 从此 java 纳入了 Oracle 旗下,也进入了 JDK7 时代 JDK---Java Development Kits 。

Java 技术体系架构

一种技术体系架构的诞生,源于他要解决现实生活中的某一类问题。Java 有三个技 术架构:

Java SE(Java Standard Edition)标准版

这个版本是 Java 平台的核心, 它提供了非常丰富的 API 来开发一般个人计算机上的应用 程序,为开发普通桌面和商务应用程序提供的解决方案。

Java EE(Java Enterprise Edition)企业版

是基于 J2SE 基础扩展的,增加了用于服务器开发的类库。为开发企业环境下的应用程 序提供的一套解决方案 ,如金融领域,政府政务领域。

Java ME(Java Micro Edition)小型版 (K-Java)

是 J2SE的内伸,包含 J2SE的一部分核心类,也有自己的扩展类,增加了适合微小装置的 类库:javax.microedition.io.*等。是为开发电子消费产品和嵌入式设备提供的解决方案。该 技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。

三个概念 JVM JRE JDK

JVM---Java Virtual Machine 在一台计算机上由软件或硬件模拟出来的计算机。

JAVA 在设计时就很注重移植和跨平台性。比如:JAVA int 永远都是 32 位。不像 c++可能是 16,32位,可能是根据编译器厂商规定的变化。这样话程序的移植就会非常麻烦。Java 针对不同的操作系统有不同的虚拟机。Java 虚拟机机 屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。

JRE --- Java Runtime Environment = JVM + 运行时所用到的类库

JDK --- Java Development Kits = 开发工具 + JRE

二、Java 开发环境搭建

1.在www.oracle.com官方网站Downloads->Java for Developers->Java SE Downloads->JDK

2.安装JDK(Java SE Development Kit)开发工具软件

3.安装好后,在指定的安装路径下可以看到如下两个文件夹

例如:

我的安装路径为其默认安装路径,为:C:\Program Files\Java,这个目录下有两个子目录,分别是 jdk1.8.0_45 和 jre1.8.0_45

注意:

[1]JDK(Java Development Kit ) =JRE+开发工具集(例如javac编译工具等)

[2]JRE(Java runtime environment)=JVM+java SE标准类库

4.设置系统Path环境变量,让javac等工具可以在任何目录运行

设置方法如下:

[1]新建环境变量 JDK_TOOLS,其内容为C:\Program Files\Java\jdk1.8.0_45\bin

[2]在Path环境变量原有内容前面加上%JDK_TOOLS%;

注意:这里的%JDK_TOOLS%表示引用JDK_TOOLS变量内容

三、 HelloWord.java程序编写、编译、运行

[1]编写:新建HelloWord.java文件,编写内容如下

注意:这里面class后面的类名需要与文件名相同,否则编译会报错

[2]编译:用cd命令切换到HelloWord.java所在的目录,用javac编译

如:javac HelloWord.java

编译成功后生成对应的字节码文件HelloWord.class

[3]运行:用java命令解释字节码文件即运行Java程序

如:java HelloWord

注意:生成的字节码文件为HelloWord.class,这种写法是错误的:java HelloWord.class, Java 会 根据传递的HelloWord在当前目录下去寻找对应的HelloWord.class文件

四、Java数据类型

1.基本数据类型

(1)数值型

[1]整数类型 byte[占8bit] ,short[占16bit], int[占32bit], long[占64位]

[2]浮点类型 float[占32bit] , double[占64bit]

(2)字符型 char [占16bit 整个Unicode字符集]

(3)布尔类型 boolean [1bit true 或 false]

注意:

[1]float f = 9.9 这种写法有问题,因为编译器默认认为9.9是一个double类型,这样会丢失精度报错

正确的写法:float f = 9.9f

[2]long b = 11111111111 这样写有问题,因为编译器默认认为数字都是int类型,报错为过大的整数

正确写法:long b = 11111111111L

[3]boolean类型的变量结果只能是true或false,当输出boolean类型变量时候,输出的结果为true或false

[4]java中null表示什么都没有

2.引用数据类型

(1)类 class

(2)接口 interface

(3)数组

五、 Java数据类型间转换

[1] boolean类型不能强制转换成任何其它数据类型

[2]自动类型转换:容量小的类型自动转换成容量大的数据类型 byte->short->int->long->float->double

即一个小数据类型的变量或数据可以直接赋值给大数据类型变量

注意:对于byte、short、int类型的变量在计算时自动转换为int

编译器给出的错误信息:

[3]强制类型转换:容量大的类型转换成容量小的数据类型时,要加上强制转换符

long a = 100L (数字默认是int型,100L是告诉编译器100是一个long类型数据)

int i = (int)a

这样做可能造成精度降低或数据溢出,使用时要小心

上面的错误解决方案:

六、Java与C语言不同

1、与C语言不同,JAVA里没有无符号(unsigned)整型。

JAVA的8种基本类型(boolean,byte,short,char,int,long,float,double)都是有符号的。

2、与C语言不同,JAVA里的char类型,占2个字节,专为存放Unicode字符所设计;

3、与C语言不同,JAVA里的boolean只能赋值为true或false,不能直接赋值0或1;

4、与C语言不同,JAVA里的long类型,不是占4字节,而是占8字节。

5、JAVA与C的不同之处,还有很多:

JAVA中没有指针,其实引用就是指针,但不能进行加减,也没有取值(*)和取地址(&)。

JAVA中有垃圾回收机制,不需要自己释放空间;只管new,不需要delete。

JAVA中的基本类型所占内存宽度是固定的,而C里可能跟平台相关。

JAVA中没有预处理指令。(如C中的#define , #include , #ifdef等)。

JAVA中没有GOTO,但可以break或continue到指定的标签。

JAVA中没有const关键字,而是用static final来定义常量。

JAVA中没有全局变量,却有静态(static)变量。

JAVA中不支持struct和union的类型。

JAVA中不支持可变参数列表。

JAVA中没有BitField的功能。

JAVA中没有typedef的功能。

七、Java关键字

对比C语言,Java关键字要多很多。上表中红颜色标示的关键字,为java中的保留关键字,保留即不能使用的意思。

我们也可以把关键字做一个分类:

这些关键字大家现在没必要记住,后面我们在用到的时候,在一个个讲解。

八、Java中常量和变量

(I)常量

(1)常量表示的是在程序中不能被修改的数据。

(2)声明常量必须用final关键字。

(3)常量分为:整型,浮点型,字符型,布尔型,字符串型常量。

例如,语法:final <数据类型> variable = 值;

(II)变量

(1)变量与常量的相同点是在声明之前都指定变量的数据类型,变量无final关键字声明。

(2)声明变量语法:<数据类型> variable;

(3)命名规则:与C语言类似。

注意:

在Java中定义一个常量用关键字"final",在C语言中用的是"const"。"final"意为终的,用它的修饰的变量只能赋一次值。也就是说

final修饰的变量在赋值后是不能修改的。

九、Java中的转义字符与运算符

1.常用的转义字符

2.运算符

可以看出,java中的运算符和C语言中我们学的运算符差不多,这里就不做过多讲解了。

注意:

在字符串中,使用"+"运算符,表示连接两个字符串。

运行结果如下:

helloword

hellowordok

helloword23

helloword5

注意:

在Java中任何类型与字符串相加都转成字符串拼接,还要注意优先级哦!

十、Java中的控制语句

(1) if 语句

用法和C语言一样,只有一个地方需要注意,如下:

(2)switch ....case .... 语句

用法和C语言一样,只有一个地方需要注意,如下:

(3)for 语句

用法和C语言一样,只有一个地方需要注意,如下:

(4) while与do...while语句

用法和C语言一样,只有一个地方需要注意,如下:

(5)break 和 continue

用法和C语言一样,不做过多讲解。

十一、Java中的数组

1.数组的定义

在C语言中,我们定义数组的方式如下:

数据类型 数组名[数组元素的个数];

例如:

int a[ 3 ];

int b[ ];//这种定义由于没有指定数组元素个数,在C语言中是不允许的。

而且我们知道,当一个数组定义好后,它的空间大小也就固定了,一般在栈上开辟空间。

那在Java中,如何定义数组呢?

(1)数据类型[] 数组名;

例如:

int[] a;

(2)数据类型 数组名[];

例如:

int a[];

以上两种方法在 java中都可以用来定义数组,我们建议大家使用第一种。

注意:

(1)在java中定义数组时,不能指定数组长度。" int[3] a"这种写法是错误的。

(2)数组的大小,需要在静态初始化 或 用"new"关键字在堆区申请内存。

(3)在C语言中,数组名是一个地址常量不能修改,在Java中,数组名是一个引用类型变量,可以修改的。

个人认为,Java中的数据名实际上类似于C语言的指针变量,不过这个指针变量只用来保存数组空间的首地址,所以在Java中,他是用数组类型定义的。

2.数组初始化与空间开辟

(1)静态初始化

数据类型[ ] 引用类型变量名 = {数据1,数据2,数据3,....};

例如:

int[] a = {1,2,3,4,5};

这种写法和C语言类似,不同的是在C语言中,此时数组的空间一般是在栈中开辟,而在Java中,数组的空间一定是在堆区分配。

(2)动态初始化

数据类型[ ] 引用类型变量名;

引用类型变量名 = new 数据类型[数组元素个数];

此时数组中的每个成员值默认为0。

引用类型变量名 = new 数据类型[ ]{数据1,数据2,数据3....}; 此时数组中的每个成员值为指定的数据。

例如:

int[] a;

a = new int[3];

a = new int[ ] {1,2,3};

这种写法是错误的,需要注意:

a = new int[3]{1,2,3};

注意:这里的"new"类似于C语言中的"malloc",不同的是在C语言中我们手动申请的内存,需要自己手动释放。在Java中我们申请的

内存由Java内部的回收机制自动释放。一般在这一块内存没有人引用的时候,释放。

(3)理解java 中的数组名与数组的关系

  

总结:

数组引用变量(数组名)是存放在栈内存(stack)中,数组元素是存放在堆内存(heap)中。

3.数组元素个数与数组元素访问

在C语言中,数组元素个数可以通过 sizeof(数组名) / 数组元素大小得到。在Java中是没有sizeof这个关键字的,在Java中数组元素个数的获得可以使用数组的属性成员"length"获取。

例如:

可以看出在Java中访问数组元素与C语言中并无区别,但是在Java中,有一种更简单的方法(For each循环,也叫增强型for循环)遍历数组。

注意:

Java SE 5.0增加了一种功能很强的循环结构,可以用来依次处理数组中的每个元素(其他类型的元素集合亦可)而不必为指定数组下标值而分心。

这种增强的for循环格式如下:

for(数据类型 变量名 : 集合){

java语句。

}

集合必须是一个数组或一个实现了Iterable接口的类对象。有关Iterable接口的内容我们在后面再讨论。

例如:

4. 数组间的拷贝

我们先来看一个例子:

虽然看似digits的数组长度看似由4变成3,其实只是numbers和digits指向同一个数组而已,而digits本身失去引用而变成垃圾,等待垃圾回收来回收(但其长度仍然为4),但其内部运行机制如下图所示。

可以看出,上面的代码并没有真正意义上做到数组的拷贝。那如何实现数组的拷贝呢,我们有两种方法:

第一种:自己写代码将A数组中的每个成员挨个赋值给B数组。

第二种:调用java中提供的函数完成拷贝—

4. 数组的排序

(1)自己用排序算法实现

(2)调用Java实现好的排序算法

十二、Java中的二维数组

Java中的二维数组可以看成是数组的数组,说白了就是二维数组中存放的是多个一维数组,二维数组中的每个元素都是一维数组的数组名。

1.二维数组的定义方式1

type[][] array(推荐) 或 type array[][] 或 type[] array[];

例如:

int array[][];

array = new int[3][4];//这个二维数组中有三个一维数组,每个一维数组有4个成员

array[0][1] //第0个数组中的第1个元素

array[1][2] //第1个数组中的第2个元素

array[2][2] //第2个数组中的第2个元素

注意:

array[0],array[1],array[2]是三个一维数组的数组名。

2.二维数组定义方式2

type[ ][ ] array(推荐) 或 type array[ ][ ] 或 type[ ] array[ ];

例如:

int array[ ][ ];

array = new int[3][ ];

请注意和c语言的不同,在c语言中,二维数组的行可以省略,但是列绝对是不能省略的,之所以这样规定是因为在c语言中,二维数组的

每一行元素个数必须是相等的。

在Java中,二维数组的行不能被省略,但是列可以省略,在Java中,二维数组的每一行数组元素的个数可以不相等,即每行是可变的。

3.二维数组的定义方式3

type[][] array = {{数据1,数据2,...},{数据1,数据2,...},{数据1,数据2,...} ...};

上一篇:JAVA EE 开发环境的搭建

下一篇:QT 5.3开发及移植(1)

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部