01-第一阶段-JavaSE基础

154 阅读7分钟

01-第一阶段-JavaSE基础

第一章-Java基础语法

1-环境搭建+入门

01.Java语言背景介绍

JavaSE

Java语言的(标准版),用于桌面应用的开发,是其他两个版本的基础 桌面应用:用户只要打开程序,程序的界面会让用户在最短的时间内找到他们需要的功能,同时 主动带领用户完成他们的工作并得到最好的体验。 学习JavaSE的目的:为今后要从事的Java EE开发,打基础

JavaME

Java语言的(小型版),用于嵌入式消费类电子设备

JavaEE

Java语言的(企业版),用于Web方向的网站开发

02.Java跨平台原理

平台:指的是操作系统
跨平台:在不同的操作系统中,都安装一个与操作系统对应的Java虚拟机
跨平台原理:
    分析:JVM本身是否可以跨平台?
    答:JVM虚拟机本身不允许跨平台,允许跨平台的是Java虚拟机

03.JRE和JDK

1.开发Java程序,需要三个步骤:编写代码、编译代码、运行代码
2.JRE:指Java运行环境,包含了JVM虚拟机及Java核心类库
3.类:Java文件在代码中的集合体现(类=Java文件,一个Java文件,一个Java类)
4.类库:存放多个Java文件的仓库
5.核心类库:Java已经写好的,非常核心的,代码仓库
A.java
.java文件属于【源文件】,是无法被JVM所识别执行的
解决方案:将其翻译为JVM可以直接识别的并执行
翻译方式:使用Java提供在JDK中的翻译工具
JDK:是Java语言的软件开发工具包,内部包含了代码的编译工具和运行工具
A.java使用编译工具,对A.java【源文件】进行编译,编译成功,会自动产生一个对应的
A.class文件【字节码文件】,该文件可以被JVM直接识别并执行。
​
A.class使用运行工具,将A.class运行在JVM虚拟机当中
JRE、JDK、JVM的作用
1.编写代码的过程中,需要使用JRE中Java已经写好的代码
2.编译代码的过程中,需要使用JDK中的翻译工具
3.运行代码的过程中,需要使用JDK中的运行工具
4.代码需要运行在JVM虚拟机当中

04.JDK的下载安装

05.常见DOS命令

06.Path环境配置

07.HelloWorld

第一步:编译 javac HelloWorld.java
第二步:运行 java HelloWorld
第三步:控制台输出

08.HelloWorld详解

09.HelloWorld案例常见问题

10.Notepad软件的安装和使用

11.注释

12.关键字

main不是关键字,可以将其理解为,比关键字更为关键的一个单词
因为JVM在执行代码的时候,只会识别该单词。

2-数据类型及转换

01.类型转换-隐式转换

  • 隐式转换

将数据类型中,取值范围小的数据,给取值范围大的类型赋值,可以直接赋值

范围:int a = 10;double b = a;

简单记:小的给大的,可以直接给。

package com.niuniu.javase.day02;
​
/**
 * @Description 隐式转换:将数据类型中,取值范围小的数据,给取值范围大的类型赋值,可以直接赋值
 * 
 * byte-short/char-int-long-float-double
 */
public class Demo01Conversion {
    public static void main(String[] args) {
        int a = 10;     // int 4个字节
        double b = a;   // double 8个字节
        System.out.println(b);//10.0
    }
}
package com.niuniu.javase.day02;
​
/**
 * @Description 小的数据类型,和大的数据类型运算,小的会提升为大的之后,再进行运算
 */
public class Demo02Conversion {
    public static void main(String[] args) {
        /**
         * a是int类型,4个字节
         * b是double类型,8个字节
         * a和b在运算的过程中,就会先将a提升为double类型,
         * 当类型统一后,再进行运算。
         * 两个double运算,结果还是double,所以,结果使用double接收
         */
        int a = 10;
        double b = 12.3;
        double c = a+b;
        System.out.println(c);//22.3
    }
}
package com.niuniu.javase.day02;
​
/**
 * @Description byte、short、char三种数据再运算的时候,不管是否有更高的数据类型,都会提升为int,然后再进行运算
 */
public class Demo03Conversion {
    public static void main(String[] args) {
        byte a = 10;
        byte b = 20;
        int c = a+b;
        System.out.println(c);//30
    }
}

02.类型转换-强制转换

  • 强制转换:把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量
  • 格式:目标数据类型 变量名 = (目标数据类型)值或者变量;
package com.niuniu.javase.day02;
​
//不兼容的类型:从int转换到byte可能会有损失精度
public class Demo04Conversion {
    public static void main(String[] args) {
        int a = 10;
        byte b = (byte) a;
        System.out.println(b);
        
        double num1 = 12.9;
        int num2 = (int) num1;
        System.out.println(num2);//12
    }
}

03.类型转换案例

前置知识点铺垫

隐式转换:当小的数据类型和大的数据类型在一起运算的时候,小的会先提升为大的之后,再进行运算;

特殊关注:byte、short、char在运算的时候,都会直接提升为int,然后再进行运算

案例一:错误原因:byte c = a+b;

这里的a和b是两个byte类型,他们再运算之前会将自己提升为int类型,然后再进行运算,两个int相加,结果还是int,想要把int类型的结果,赋值为byte类型的变量,大的给小的,不能直接给,非要给的话,就需要强制类型转换。

package com.niuniu.javase.day02;
​
/**
 * @Description    请找出下列代码的错误,指出原因并解决
 */
public class Demo05Conversion {
    public static void main(String[] args) {
        byte a = 3;
        byte b = 4;
        //byte c = a+b; 错误
        byte c = (byte) (a+b);
        System.out.println(c);
    }
}

案例二:

3和4是两个常量,整数常量默认的数据类型是int,这里两个int相加,结果还是int,int给byte赋值。emmm...应该需要强转吧?

Java存在常量优化机制:

byte d = 3+4;这里的3和4是两个常量,Java存在常量优化机制,会在编译的时候就会让3和4进行相加,然后会自动判断7是否在byte的取值范围内,不在范围内:编译出错,在范围内:通过编译。

package com.niuniu.javase.day02;
​
/**
 * @Description
 */
public class Demo06Conversion {
    public static void main(String[] args) {
        byte d = 3+4;
        System.out.println(d);//7
    }
}

04.常量

  • 常量:在程序的执行过程中,其值不会发生任何改变的量(数据)

  • 常量的分类

    • 字符串常量:被双引号所包裹的内容
    • 整数常量:所有整数
    • 小数常量:所有小数
    • 字符常量:被单引号包裹的内容,里面只能存放单个字符
    • 布尔常量:只有两值,true/false,布尔常量单独打印没有意义,为了后面要学习的运算符,打基础
    • 空常量:null,数组部分详细讲解,注意:null空常量不能输出打印
package com.niuniu.javase.day02;
​
/**
 * @Description 常量:在程序的执行过程中,其值不会发生改变的量(数据)
 */
public class Demo07Constant {
    public static void main(String[] args) {
        System.out.println("你好,黑马程序员");
        System.out.println(123);
        System.out.println(12.3);
        System.out.println('a');
        System.out.println(true);
        System.out.println(false);
        System.out.println(5>10);
        //System.out.println(null);
    }
}

05.变量

变量:就是内存中的存储空间,空间中存储着经常发生改变的量(数据)

06.数据类型

计算机存储单元

我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元叫做位(bit),我们称之为"比特币",通常用小写的字母"b"表示。而计算机中最小的存储单元"字节(byte)",通常用大写字母"B"表示,字节是由连续的8个位组成。

1B(字节)=8bit

1KB=1024B

1MB=1024KB

1GB=1024MB

...

数据类型

  • 不同的数据类型也分配了不同的内存空间,所以他们表示的数据大小也是不一样的。

07.变量注意事项

  • 变量名不允许重复定义
  • 一条语句可以定义多个变量,但需要使用逗号进行分割
  • 变量在使用之前一定要进行赋值
  • 定义float和long变量的要加F/f、L/l
  • 变量的作用域范围:只在它所在的大括号中有效

08.键盘录入

09.标识符

标识符:就是给类、方法、变量等起名字的符号