美文网首页
Java学习——day 01

Java学习——day 01

作者: 振礼硕晨 | 来源:发表于2018-12-14 09:49 被阅读0次

    主要内容

    • 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类型。这就是类型提升的问题。也是为了避免溢出情况的发生。

    相关文章

      网友评论

          本文标题:Java学习——day 01

          本文链接:https://www.haomeiwen.com/subject/xaevhqtx.html