Java初识一
一.java简介
Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。
Java的发展历程:
- 1995年5月23日,Java语言诞生
- 1996年1月 JDK1.0
- 1997年2月 JDK1.1
- 1998年12月JDK1.2(将Java分成了J2SE,J2EE,J2ME)
- 2000年5月 J2SE1.3
- 2002年2月 J2SE1.4
- 2004年10月 JDK1.5(改名JavaSE5.0,JavaEE,JavaME)
- 2006年12月JavaSE6.0
- 2009年04月20日,甲骨文(Oracle)74亿美元收购Sun。
- 2011年7月 JavaSE7.0
- 2014年3月 JavaSE8.0
Java分为三个体系(三个平台):
- JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版)
- JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版)
- JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)。
2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名以取消其中的数字"2":J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。
JavaSE(J2SE):
J2SE(Java 2 Platform Standard Edition)标准版
* 是为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发
JavaME(J2ME):
J2ME(Java 2 Platform Micro Edition)小型版 * 是为开发电子消费产品和嵌入式设备提供的解决方案
JavaEE(J2EE):
J2EE(Java 2 Platform Enterprise Edition)企业版
* 是为开发企业环境下的应用程序提供的一套解决方案,该技术体系中包含的技术如 Servlet、Jsp等,主要针对于Web应用程序开发
二.java跨平台原理
1.什么是平台?
平台的简单定义:我们把CPU处理器与操作系统的整体叫平台
CPU大家都知道,如果计算机是人,那CPU就是人的大脑,它既负责思维运算,又负责身体各部件的命令控制。CPU的种类很多,除去我们熟知的Intel与AMD外,还有比如上面说到的SUN的Sparc,比如IBM的PowerPC等等,这些各个公司生产的CPU使用或相同或不同的指令集。指令集就是cpu中用来计算和控制计算机系统的一套指令的集合。指令集又分为精简指令集(RISC)与复杂指令集(CISC),每种cpu都有其特定的指令集。开发程序,首先要知道该程序在什么CPU上运行,也就是要知道CPU所使用的指令集。
下面说操作系统,操作系统是充当用户和计算机之间交互的界面软件,不同的操作系统支持不同的CPU,严格意义上说是不同的操作系统支持不同CPU的指令集。例如 windows和liunx都支持Intel和AMD的复杂指令集,但并不支持PowerPC所使用的精简指令集,而早期的MAC电脑使用的是PowerPC处理器,所以也就无法在MAC下直接安装windows,直到05年MAC改用了Intel的CPU,才使在MAC下安装windows成为可能。但问题来了,原来的MAC 操作系统也只支持PowerPC,在Intel上也不能安装,怎么办?所以苹果公司也得重写自己的MAC操作系统以支持这种变化。最后总结下,我们要知道,不同的操作系统支持不同的CPU指令集,现在的windows,liunx,mac,solaris都支持Intel与AMD的CPU指令集。
有了上面的铺垫,旺旺老师就要告诉大家,如果您要开发程序,首先应该确定:1,CPU类型,也就是指令集类型;2,操作系统;我们把这种软硬件的结合叫平台。也可以说“平台= CPU+OS”。又因为现在主流的操作系统都支持主流的CPU,所以有时也把操作系统称为平台。
跨平台的定义:Java程序可以在任意操作系统上运行,一次编写到处运行
原理:

实现跨平台需要依赖Java的虚拟机 JVM (Java Virtual Machine)

这里再说下语言根据执行方式的不同分类:第一是编译执行,如C,它把源程序由特定平台的编译器一次性编译为平台相关的机器码,它的优点是执行速度快,缺点是无法跨平台;第二是解释执行,如HTML,JavaScript,它使用特定的解释器,把代码一行行解释为机器码,类似于同声翻译,它的优点是可以跨平台,缺点是执行速度慢,暴露源程序;第三种是从Java开始引入的“中间码+虚拟机”的方式,它既整合了编译语言与解释语言的优点,同时如虚拟机又可以解决如垃圾回收,安全性检查等这些传统语言头疼的问题,所以其后微软的.NET平台也使用的这种方式。
Java先编译后解释
同一个.class文件在不同的虚拟机会得到不同的机器指令(Windows和Linux的机器指令不同),但是最终执行的结果却是相同的
2.JVM,JDK,JRE
JVM:
三.JDK的下载与安装
1.登录https://www.oracle.com网址,到网站上找到对应的的系统进行下载
2.下载完成后,直接点击安装,傻瓜式安装即可
注意事项:1.安装路径不要有中文或者特殊符号如空格等。开发工具最好安装目录统一(建议)
2.项目开发中依赖的jdk版本一样,一定要选择最合适的jdk版本安装
3.配置环境变量
新建一个环境变量

添加到环境变量中去:

% %双百分号表示引用
4.验证环境变量是否成功


配置好环境变量后,在cmd 中输入Java 和 Javac 出现上述图片,即可
四.编写第一个Java程序
1.HelloWorld实例
/* 这是Java的多行注释 */ // 这是我的helloworld案例 public class HelloWorld { //这是程序的入口函数,所有的入口函数都是从main函数开始 public static void main(String[] args) { // 这是输出语句 System.out.println("HelloWorld"); } }
2.Java程序的执行过程
/* 1.在命令行模式中,输入javac命令对源代码进行编译,生成字节码文件 javac 源文件名.java 2.编译完成后,如果没有报错信息,输入java命令对class字节码文件进行解释运行,执行时不需要添加.class扩展名 java HelloWorld */

这样我们就可以在命令行中看到HelloWorld了
3.注释
注释概述 用于解释说明程序的文字 Java中注释分类 单行注释 格式: //注释文字 多行注释 格式: /* 注释文字 */ 文档注释 格式:/** 注释文字 */ 注释的作用 解释说明程序,提高程序的阅读性
4.关键字
/* 关键字概述 被Java语言赋予特定含义的单词 关键字特点 1.组成关键字的字母全部小写 2.常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观 */
Java中的关键字


5.常量
/* 一.常量概述 在程序执行的过程中,其值不可以发生改变的量 二.常量分类 1.字符串常量 用双引号括起来的内容(“HelloWorld”) 2.整数常量 所有整数(12,-23) 3.小数常量 所有小数(12.34) 4.字符常量 用单引号括起来的内容(‘a’,’A’,’0’) 5.布尔常量 较为特有,只有true和false 6.空常量 null(数组部分讲解) */
6.变量
/* 变量概述 在程序执行的过程中,在某个范围内其值可以发生改变的量 从本质上讲,变量其实是内存中的一小块区域 变量定义格式 数据类型 变量名 = 初始化值; 注意:格式是固定的,记住格式,以不变应万变 */
变量的一些要求:

五.java中的数据类型
1.数据类型概述
Java语言是强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以它们表示的数据大小也是不一样的

2.基础数据类型


3.标识符
1.标识符的简介
/* 作用 给包,类,方法,变量等起名字 组成规则 由字符,下划线_,美元符$组成 这里的字符采用的是unicode字符集,所以包括英文大小写字母,中文字符,数字字符等。 注意事项 1.不能以数字开头 2.不能是Java中的关键字 */
2.标识符命名规则
命名规则 1.基本要求 见名知意 2.常见命名的规则 包 (其实就是文件夹,用于对类进行管理) 全部小写,多级包用点隔开。 com,cn,com.it 类 一个单词首字母大写 Student,Car 多个单词,每个单词首字母大写 HelloWorld 变量或者方法 一个单词首字母小写。 age,show() 多个单词,从第二个单词开始每个单词首字母大写 maxAge,getAge()
4.变量的命名规则
/* 1.由字符,下划线_,美元符$组成 2.不能以数字开头 3.不能是Java中的关键字 */
注意事项:
/* 1.变量未赋值,不能直接使用 2.变量只在它所属的范围内有效。 变量在哪对大括号内,变量就属于哪对大括号 3.一行上可以定义多个变量,但是不建议 */
示例代码:
public class Variable { public static void main(String[] args){ // 变量定义的方法: (数据类型) 变量名 = 初始值 //1.变量定义的第一种方式: int a = 10; System.out.println(a); // 变量不能没有未赋值,不能直接使用 //int b; //System.out.println(b); 错误,没有赋值不能够先使用 //2.变量定义的第二种方式: int b; b = 20; System.out.println(b); //3.可以在一行上定义多个变量,但是不建议这样做 int c,d; c = 30; d = 50; System.out.println(c); System.out.println(d); int ee = 66; //4.变量只对它所属的范围那对括号有效 { int e = 60; System.out.println(e); System.out.println(ee); } //System.out.println(e);错误,变量只对离他最近的那对括号有效,内层括号可以引用外层括号的变量,外层不能用内层括号的变量 //5.定义long类型的变量 //long f = 100000000000000; 错误,过大的整数,需要在后面加上L long f = 100000000000000L; System.out.println(f); //6.定义float类型的变量 //float ff = 11.22; 错误: 可能损失精度 float ff = 11.22F; System.out.println(ff); } }
5.类型转换
1.隐式转换(默认转换)
byte,short,char—int—long—float—double
byte,short,char相互之间不转换,他们参与运算首先转换为int类型
2.强制转换
目标类型 变量名=(目标类型)(被转换的数据);
3.示例代码
public class TypeChange { public static void main(String[] args){ //1.相同类型的加法运算 int a = 5; int b = 10; //int c = a + b; //System.out.println(c); System.out.println(a+b); // 2.不同数据类型的运算 byte c = 20; int d = 30; //byte e = c + d; 可能损失精度(应该定义为精度更高的数据类型) //System.out.println(e); int e = c + d ; System.out.println(e); //隐式转换 System.out.println(c + d); //3.如果需要强制转换,格式:目标类型 变量名=(目标类型)(被转换的数据); byte f = (byte)(c + d); System.out.println(f); // 建议:做运算的时候,结果该是什么类型,就用什么类型接收,不要随便转换类型,否则可能损失精度 } }

浙公网安备 33010602011771号