目录
1.JDK(Java Development Kit)Java的工具包,Java程序的开发,必须要有JDK。
2.JRE(Java Runtime Environment)Java程序运行时的环境,如果我们想要运行一个Java程序,只需要安装JRE即可,包含了JVM和核心的类、库。
3.JVM(Java Virtual Machine)Java虚拟机,是运行所有Java程序的假想计算机,Java成运行我们编写的代码,都是在JVM上运行。
一.计算机语言的发展历史
第一代语言:纯机器语言,只有计算机能读懂,人基本读不懂
00011 1111000
第二代语言:汇编语言,机器能读懂,有部分人也能读懂,比较难懂。
0x1234 ,ADD3112
第三代语言:机器能读懂,人类也能读懂
--C语言,面向过程
--C++面向过程/面向对象
--java面向对象语言
Java的起源
1994年,sun公司,詹姆斯·高斯林-->Java的前身Oak
1995年,sun公司把Oak包装成Java推广
二.Java名字由来
Java的版本
95年-->Java1.0
97年-->Java1.1
98年-->java1.2
sun公司把java技术拆分成3个方向
J2SE:面向桌面应用开发
J2EE:面向企业级开发
J2ME:面向手机移动终端开发
2000年-->java1.3版本
2002-->java1.4版本
2004-->java5版本
2006-->Java6版本把之前的技术方向改名为
JavaSE、JavaEE、JavaME
2009-->sun公司被Oracle公司收购,11年发布了Java7版本
2014 --> 发布了Java8版本 ,学习版本
2017 年9月-->发布了Java9版本
2018年3月 --> 发布了Java10
2018年9月 -->发布了Java11
...每半年更新一次
(以上仅作了解)
三.Java跨平台的原理
java跨平台,指的是Java可以在多个操作系统上运行
跨平台原理:就类似于我们和其他国家的人需要交流一样,交流的时候通过翻译,Java的跨平台其实也是通过翻译来实现的,Java通过JVM来实现的
四.JAVA的三大平台(JDK、JRE、JVM)
1.JDK(Java Development Kit)Java的工具包,Java程序的开发,必须要有JDK。
(1)编译器
(2)解释器
(3)源代码
(4)JRE
2.JRE(Java Runtime Environment)Java程序运行时的环境,如果我们想要运行一个Java程序,只需要安装JRE即可,包含了JVM和核心的类、库。
(1)源代码
(2)JVM
3.JVM(Java Virtual Machine)Java虚拟机,是运行所有Java程序的假想计算机,Java成运行我们编写的代码,都是在JVM上运行。
五.JDK安装
Oracle官网:Oracle | Cloud Applications and Cloud Platform
注释:
i586或x86:32位操作系统
x64:64位操作系统
安装完JDK后配置环境变量---能让系统快速找到javac编译器
JAVA源代码文件,经过编译器编译得到,class字节码文件
1.找到编译器(javac文件)
2.找到源代码文件(java文件)
六.第一个JAVA程序 Hello World
Java程序开发的步骤:编写、编译、运行
1.Notepad++文本编辑器(轻量级)
安装方式:Notepad++软件的下载与安装步骤(图文详解)_weixin_33923762的博客-CSDN博客
打开Notepad写一个Hello文件:
两种执行方式
(1).在目录下cmd
(2).绝对路径下编译
生成.class字节码文件
执行成功效果
代码说明
1.public : 修饰符,一般有public修饰class名和文件名需要相同
2class:修饰类的,表示类的名称
3.public static void main(String[] args)
main函数:java的程序的入口和出口,一般一个程序,从main函数的
4. System.out.print(""):标准输出,表示在控制台输出对应的字符串内容
5.编译.java程序:
通过javac命令可以实现编译,生成一个.class文件
6.运行程序:
通过java命令,运行.class文件,运行的时候不需要加上后缀.class,因为JVM会自动去找Hello类,而不是找Hello.class文件
2.Idea开发工具(重量级)
安装方式:IDEA下载安装教程_J小黄的博客-CSDN博客_idea下载教程
包Package 本质:文件夹
类Class 本质:源代码文件
每一个包都有独立的命名空间namespace
七.JAVA基本数据类型
Java中整数,默认是int类型
Java中小数,默认是double类型的
浮点型的精度,指的是小数点后的位数整数的全部位数就是他的精度。
char类型可以包含一个英文字母、字符、汉字,都是由单引号括起来
boolean类型两个值:true 和false
计算机存储只认识二进制
最小的空间单位:比特(bit) 一个bit只能存储一个0或者是一个1
最小的存储空间:字节(byte)
每8个bit是一个最小存储空间称为字节(byte)
位(bit):一个数字0,或者一个数字1,代表1位
字节(byte):字节是计算机的最小单位,一个字节包含8位
KB = 1024 byte
MB = 1024 KB
GB= 1024 MB
TB= 1024 GB
PB= 1024 TB
EB= 1024 PB
ZB= 1024 EB
八.Java注释
注释就是一些代码的解释语句,注释的和代码的比例应该1:1
单行注释:在解释文字之前加上//
多行注释:使用/* */将注释内容包括起来
九.关键字
关键字表示Java中对Java编译器有特殊的意义的一些单词
十.变量
定义:
程序运行期间,内容会发生改变的量,本质是在内存中开辟一块空间,用来存放定义的数据类型。
创建变量的语法:
1.分开创建
数据类型 变量名称;
变量名称=字面量
2.一步创建
数据类型 变量名称=字面量
变量声明注意
1,如果需要创建多个变量,变量名不能重复
2,float和long类型,值后面的F和L不能不写
3,如果是byte和short类型,右侧的值不能超过左侧类型的范围
4,如果变量没有赋值,不能直接使用,需要赋值才能使用
5,变量的使用不能超过作用域范围
作用域:从定义变量开始,一直到所属的大括号结束
变量的命名规范
1.变量的命名规范遵循标识符命名规范
2.变量的命名遵循 见名知意 的原则
3.java变量名不建议用中文
4.变量名命名一般遵循小驼峰式
十一.基本数据类型的转换
隐式转换
小类型向大类型的转换会自动完成
byte->short->int->long->float->double
int类型和char类型在某些情况下可以实现相互转换
小类型的精度高于大类型的时候,要注意丢失精度的隐患
显示转换
定义:当目标数据类型,小于原来的数据类型,需要显式的强制类型转换
制类型转换注意
1.强制类型转换会发生精度损失,数据溢出,一般不推荐使用
2.byte/short/char 三个类型可以参与数学计算,但是参与数学运算的时候,会被提升为int类型,再计算,所以他们计算结果也是int类型,要注意结果类型的问题
//强制类型转换需要按照特定的语法执行,不能自动完成
//语法格式 : 小范围的变量名 = (小范围类型)大范围的数据
//左边是int类型,右边是long类型,两边是不一样的
//把long-->int,不是从小到大,不能发生自动转换
//需要使用强制类型转换的方式,在大范围数据前加上(),括号中写如小类型
int num6 = (int)1000L;
System.out.println(num6);
//大的数据类型,转成小的数据类型的时候,可能会发生数据溢出的问题
//如果大类型的数据,本身是在小类型的范围内,可以正常转换,
//如果大类型的数据,超出了小类型的范围,会发生数据错误
int i = 129;
byte b = (byte)i; //byte范围是 -128~127
System.out.println(b); //-127,129超过了byte的范围,数值会发生改变
//Java以补码的形式表示二进制的,最高位是符号位,0表示正数,1表示负数
//补码的计算方式
//将原来,除了符号位以外的数值,按位取反,再+1
//1000 0001
//1111 1110+1 ==》1111 1111
//double --> int 强制转换
//将小数点后的小数位舍弃掉
int num7 = (int)4.558;
System.out.println(num7);
//字符类型和int类型的转换
//char类型一旦进行了数学运算,会将值按照ascii码表中的对应数值转换后参与计算
char ch = 'A'; //这是字符类型变量,变量里面有个A
System.out.println(ch+1); // 66 将大写字母转成数值后,参与计算
//两个byte类型的数据,参与计算以后,会转成int类型,所以最后也需要强制转换
byte num8 = 100;
byte num10 = 10;
byte num9 = (byte)(num8+num10);
System.out.println(num9);
//double d = 123.456;
//float f = d;
//System.out.println(f);
//两个变量定义有没有区别?
float f1 = (float)123.456; //做了强制转换,将double转成了float
float f2 = 123.456F; //定义了值是float类型