基础知识、JDK、HelloWorld、常量、变量
1. 计算机基础知识
1.1 二进制(binary)
每一个0或者1,叫做一个比特(bit),逢2进1
其他进制:八进制(octonary)、十进制(decimal)、十六进制(hexadecimal)
十进制-->二进制:
- 使用除以2获取余数的方式
二进制-->十进制
- 方式一:
- 方式二:二进制数小数点左边,从右到左用每一位数乘以2的对应位的次方,小数点右边的,从左到右用每一位乘以2的对应位的负数次方
方式三:
对于多位数,处在某一位上的“1”所表示的数值的大小,称为该位的位权。
上图中第二行即是二进制的位权,如小数点左边第一位的位权为2^0^,第二位的位权为2^1^,以此类推。
所以完整的换算公式为:
1*2^3^+1*2^2^+0*2^1^+1*2^0^+0*2^-1^+1*2^-2^=13.75
字节
- 8个bit(二进制位)0000-0000 等于一个字节,写成 1byte 或者 1B
- 8bit = 1B
- 1024B=1KB
- 1024KB=1MB
- 1024MB=1GB
- 1024GB=1TB
常用DOS命令
Win
+R
,输入cmd
,进入DOS命令行窗口
- 路径C:\Users表示当前操作的磁盘为C盘
常用命令
命令 操作符号 盘符切换命令 盘符名:
查看当前文件夹 dir
进入文件夹 cd 文件夹名
退出文件夹 cd..
退出到磁盘根目录 cd\
清屏 cls
2. Java语言开发环境搭建
2.1 Java虚拟机——JVM
- JVM(Java Virtual Machine):Java虚拟机,是Java程序运行的载体。
- 跨平台:软件是运行在操作系统上的,Java语言写的软件可以运行在所有操作系统上,称为Java语言的跨平台性。该特性是由JVM实现,因为所有操作系统都有对应的JVM,只要有JVM,Java程序就能运行。JVM本身不具有跨平台性。
2.2 JRE和JDK
- JRE(Java Runtime Environment):Java运行环境,包含
JVM
和运行需要的核心类库
。 - JDK(Java Development Kit):Java开发工具包,包含
JRE
和开发人员工具。
2.3 JDK8安装图解
- 从oracle官网下载JDK安装包
- 选择安装组件时,开发工具和源代码必选,公共JRE可选可不选
2.4 JAVA_HOME环境变量的配置
配置环境变量的作用
开发Java程序需要使用JDK中的工具,如java.exe
和javac.exe
,在JDK安装目录下的bin
中。
如果想在DOS命令行下使用这些工具,需要通过cd
命令进入到bin
目录下。
- 没有在
bin
目录下
- 在
bin
目录下
为了方便开发,我们想要在任意目录下都可以使用JDK开发工具,所以必须配置环境变量。
配置环境变量步骤
1.Win
+Pause
打开系统信息页面
2.4步操作如下图
注意:
1.Java_HOME
配置好后,%JAVA_HOME%
就等于C:\Java\jdk1.8.0_201
,所以在path
中通过%JAVA_HOME%
来代替C:\Java\jdk1.8.0_201
。
2.path
中%JAVA_HOME%\bin
必须上移到path
的最上方,意思是输入DOS命令后最先去该路径寻找工具。
验证环境变量配置
打开控制台,输入java
,如图
3. HelloWorld
3.1 Java开发三个步骤:编写、编译、运行
3.2 编写Java源代码
- 在
D:\
下新建文本,文件名修改为HelloWorld.java
。 - 用
记事本
打开
除了记事本,还可以用Notepad++、EditPlus打开。
- 输入如下代码并保存
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
此时已经编写好了.java
源代码文件。
3.3 编译Java源文件
- 在
HelloWorld.java
目录下的地址栏输入cmd
,回车,进入DOS命令行窗口
- 输入编译命令:
javac Java源文件名.java
在本例子中,输入:
javac HelloWorld.java
编译成功DOS命令行没有任何提示:
在D:\
下生成了一个HelloWorld.class
文件,该文件就是JVM
可运行的字节码文件。
3.4 运行Java程序
- 在
HelloWorld.class
目录下的地址栏输入cmd
,回车,进入DOS命令行窗口 - 输入运行命令:
java 类名称
在本例中输入:
java HelloWorld
运行结果:
3.5 说明
- 编译:
javac
编译器将Java源文件转换成字节码文件,在这个过程中,编译器会检查Java源文件中的错误。- 如果有错误,编译失败,并给出错误信息;
- 如果没有错误,则编译成功,并生成
.class
文件
- 运行:是将
.class
文件交给JVM
运行。 - main方法:即主方法。main方法是程序的入口,
JVM
在运行程序时,都是从main方法开始执行。每个程序只有一个主方法。
3.6 注释(comment)
- 注释:对代码的解释和说明。不影响程序的编译和运行。
- 注释分类:
- 单行注释:以
//
开始,//
后的内容即为单行注释,如下图中第3行绿色字体部分
- 单行注释:以
- 多行注释:以
/*
开始,*/
结束,中间的所有行都属于注释内容,如下图中第3行到第6行绿色字体部分
3.7 关键字(keyword)
- 关键字:在Java中有特殊含义的单词,关键字的使用要符合Java规范。
- 关键字都是全小写的英语单词
HelloWorld
中出现的关键字有public
,class
,static
,void
- 在Notepad++/EditPlus等软件中颜色特殊。
3.8 标识符(identifier)
- 标识符:程序中人为定义的名字,包括类名、变量名、方法名等。
HelloWorld
中,出现的标识符为类名HelloWorld
- 命名规则:
硬性规定
- 可以使用
英文字母26个(区分大小写)
、阿拉伯数字0-9
、$(美元符号)
、_(下划线)
- 不能以数字开头
- 不能是关键字
- 可以使用
- 命名规范:
软性要求
- 类名:使用大驼峰式,首字母大写,后面所有单词首字母大写。
- 方法名:使用小驼峰式,首字母小写,后面所有单词首字母大写。
- 变量名:全部小写
4. 常量
4.1 概述
- 常量:指在Java程序中固定不变的数据。
4.2 分类
类型 | 含义 | 举例 |
---|---|---|
整数常量 | 所有整数 | -2,0,2 |
小数常量 | 所有小数 | 2.0,-2.0 |
字符常量 | 单引号引起来的一个字符,可以为空格,不可以为空 | 'a','2',' ' |
字符串常量 | s双引号引起来的任意个字符,可以为空 | "a","Java","" |
布尔常量 | true,false,仅有这两个 | true,false |
空常量 | 只有一个 | null |
4.3 练习
- 输出各种类型的常量
public class ConstantDemo {
public static void main(String[] args) {
// 整数常量
System.out.println(2);
// 小数常量
System.out.println(2.0);
// 字符常量
System.out.println('a');
// 字符串常量
System.out.println("Hello");
// 布尔常量
System.out.println(true);
// 空常量无法直接打印
// System.out.println(null);
}
}
- 空常量直接打印会报错,编译不通过:
5. 变量和数据类型
5.1 变量概述
- 变量:程序中可以变化的量称为变量,与常量概念相对
- Java要求一个变量每次只能保存一个数据,这个数据可以是常量也可以是变量
- 必须要明确保存的数据类型
5.2 数据类型
数据类型分类
- 基本数据类型:
整数
、浮点数
、字符
、布尔
- 基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上
- 引用数据类型:
类
、数组
、接口
、枚举
、注解
- 引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址
基本数据类型
数据类型 | 关键字 | 内存占用 | 取值范围 | 默认值 |
---|---|---|---|---|
字节型 | byte | 1byte | -2^7^~2^7^-1 | 0 |
短整型 | short | 2byte | -2^15^~2^15^ -1 | 0 |
整型 | int(整数默认) | 4byte | -2^31^~2^31^ -1 | 0 |
长整型 | long | 8byte | -2^63^~2^63^ -1 | 0L |
单精度浮点数 | float | 4byte | -3.40E-38~3.40E+38 | 0.0F |
双精度浮点数 | double(浮点数默认) | 8byte | -1.79E-308~1.79E+308 | 0.0 |
字符型 | char | 2byte | 0~2^16^ -1 | '\u0000' |
布尔类型 | boolean | 1byte | true,false | false |
1byte=8bit
float的精度是6位有效数字
double的精度是15位有效数字
5.3 变量的定义
变量定义的格式包括三个要素:数据类型、变量名、数据值
格式
数据类型 变量名 = 数据值;
示例
- 定义所有基本数据类型的变量:
public class Variable {
public static void main(String[] args) {
// 定义字节型变量
byte b = 100;
System.out.println(b);
// 定义短整型变量
short s = 1000;
System.out.println(s);
// 定义整型变量
int i = 1234;
System.out.println(i);
// 定义长整型变量
long l = 12345L;
System.out.println(l);
// 定义单精度浮点型变量
float f = 2.5F;
System.out.println(f);
// 定义双精度浮点型变量
double d = 3.5;
System.out.println(d);
// 定义字符型变量
char c = 'a';
System.out.println(c);
// 定义布尔类型变量
boolean boo = true;
System.out.println(b);
}
}
long类型:数据后面加L表示
float类型:数据后面加F表示
- 运行结果
5.4 注意事项
- 变量名称:在同一个作用域内,变量名不可重复
- 变量赋值:定义的变量,不赋值不能使用