Java学习——day 01

主要内容

  • jdk、jre、jvm的区别
  • Java环境的配置
  • 第一个Java程序:Hello woeld
  • 进制间的相互转换
  • Java的数据类型
  • J2EE,J2SE,J2ME三者的区别
  • Java标识符规则
  • 字符集简介
  • float和double的区别
  • char类型的注意点(可以直接当做整数来使用,注意两者之间的转换关系)
  • 自动转型、强制转型、类型提升

笔记详解

1. jdk、jre、jvm的区别和联系

jdk :Java development kit,Java开发工具包,是整个JAVA的核心。包括了Java运行环境 jre ,一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。jdk是java开发工具包,基本上每个学java的人都会先在机器 上装一个jdk。

jre : Java run environment,Java运行环境,包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)。

jvm :Java virtual machine,Java虚拟机,它只认识 xxx.class 这种类型的文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。jvm 是 Java 能够跨平台的核心。

三者的关系是:jdk 包含 jrejre 包含 jvm

2. Java环境配置

首先到 www.oracle.com 官网下载jdk,进行安装,下载链接: java SE jdk

安装好之后,配置系统环境变量。首先创建 JAVA_HOME 环境变量,变量值为jdk安装路径,如: C:\Program Files\Java\jdk-11.0.1 。给 Path 变量添加一个新值,可以直接使用新建的 JAVA_HOME 变量,如: %JAVA_HOME%\bin

3. 第一个Java程序:Hello world

Java是面向对象的一门语言,所以在 .java 文件中必须要定义一个个的class,在一个 .java 文件中可以定义多个class,这样经过编译之后,会生成多个 .class 文件。但是一个 .java 文件中,有且仅有一个一个使用public class定义的class,而且这个class名必须和 .java 文件名一模一样。

Java是区分大小写的一门语言,所以字母的大小写一定不能混淆,不能随意更改。

4. 进制之间的相互转换

Java中经常使用的是二进制、八进制、十进制、十六进制。定义不同进制的方法如下

int a1 = 0b10;		// 定义二进制
int a2 = 010;		// 定义八进制
int a3 = 10;		// 定义十进制
int a4 = 0x10;		// 定义十六进制

上面定义的不同进制的数字,通过屏幕打印出来的最终结果是以十进制显示的,如果想要以二进制、八进制或者是十六进制来显示的话,可以使用进制转换方法来进行:

System.out.println(Integer.toBinaryString(a1));    // 十进制转二进制
System.out.println(Integer.toOctalString(a2));    // 十进制转八进制
System.out.println(Integer.toHexString(a4));      // 十进制转十六进制

5. Java的数据类型

6. J2EE,J2SE,J2ME三者的区别

J2EE,J2SE,J2ME是Sun 公司的Java多个版本,就像Windows XP还有专业版和家庭版是一样的。

J2EE:Java 2 Platform Enterprise Edition 企业版,用于企业应用,支持分布式部署。
J2SE:Java 2 Platform Standard Edition 标准版,用于桌面应用,也是J2EE的基础。
J2ME:Java 2 Platform Micro Edition 移动版用于小型设备,是J2SE的一个子集。

7. Java标识符规则

Java中标识符是用来给变量、类、方法等命名的,遵守如下的规则:

  1. 标识符必须以字母、下划线、美元符$来开头
  2. 标识符的其他部分可以使字母、数字、下划线、美元符$的任意组合,不能包含其他的字符
  3. Java标识符是区分大小写的,长度没有限制
  4. 标识符不能使Java关键字(class、static、public等)
  5. Java标识符可以使用中文,但是非常不建议这样做

8. 字符集简介

9. float和double的区别

浮点型的默认数据类型是double类型,而且double类型占8个字节,float占4个字节,所以在定义float类型变量的时候,不能直接进行赋值,声明方式如下:

float float_num = 3.14F;		// 需要在字面量后面加上F进行标识
double double_num = 3.14;		// 可直接进行赋值

float和double是浮点数类型,标识的值不是精确地,特别是在比较两个数值变量是否相等的时候,一定要避免使用浮点数进行比较,应该是用整型变量。比如下面的情况:

float float_num = 0.1F;		
double double_num = 1.0/10;	

System.out.println(float_num);		// 0.1
System.out.println(double_num);		// 0.1
System.out.println(float_num == double_num);		// 但是这里的结果是false

10. char类型的注意点(可以直接当做整数来使用,注意两者之间的转换关系)

char类型可以直接赋值给int类型,最终的数值是该字符对应的 ASCII数值

char temp_a = 'a';
int num_a = temp_a;
System.out.println(num_a);      // 输出的是97,即a对应的ASCII码

int类型也可以转为char类型,转换的结果是根据 ASCII对应关系 来定的。如果int类型的数值有对应的字符(一般为0-127),那么可以成功转换,否则会转换为乱码。

int num_b = 98;
char temp_b = (char)num_b;      // 注意这里要进行强制转型
System.out.println(temp_b);    // 输出的结果是b

综合练习:使用for循环,打印出26个字母:

char temp_a = 'a';
for(int i = 0; i < 26; i++) {
	char temp = (char)(temp_a + i);
	System.out.print(temp);
}

11. 自动转型、强制转型、类型提升

Java程序中,变量会根据需要进行自动转型,这主要体现在给变量赋值的时候,比如以下情况:

byte byte_num = 100;    // int类型转byte类型,前提是不能超过byte类型表示的数值范围
short short_num = 200;    // int类型转short类型,前提是不能超过short类型表示的数值范围
int int_num = 'a';    // char类型转int类型
long long_num = 6666;    // int类型转long类型

float flaot_num = int_num;   // int类型转float 类型,可能会存在精度丢失问题
double double_num = flaot_num;   // float类型转double类型

Java程序中,我们还可以根据需要,对数据进行强制转型,防治数据溢出的问题。

long times = 70*60*24*365*200000000;
System.out.println(times);    // 70*60*24*365*200000000得出的结果太大,最终的times数值是不对的,甚至是负数

为了解决上面的问题,我们就要进行强制转型,写法如下:

long times = 70*60*24*365*(long)200000000;
System.out.println(times);

其实上面的写法也涉及到类型提升的知识点,经过强制转型后的200000000,变为long类型,这个时候再去和int类型做加减乘除取余等操作,最终的结果也是long类型。这就是类型提升的问题。也是为了避免溢出情况的发生。

猜你喜欢

转载自blog.csdn.net/fengzhen8023/article/details/84998219