Written By 虾饺
Based On 黑马Java课程(2018版)
虾饺的Java学习笔记-基础 01 变量与数据类型
目录
1. Java概述、Helloworld案例
2. 工具安装 、配置环境变量、注释、关键字
3. 常量、变量、数据类型、标识符
第1章 Java概述
1.1 Java语言发展史和平台概述
1.2 JVM,JRE,JDK的概述
- 什么是跨平台?
- 平台:指的是操作系统(Windows,Linux,Mac)
- 跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行
- 原理:实现跨平台需要依赖Java的虚拟机JVM (Java Virtual Machine)

- JVM,JRE,JDK说明
- JVM(Java Virtual Machine): Java虚拟机,Java程序需要运行在虚拟机上,不同平台有自己的虚拟机,因此Java语言可以跨平台.

- JRE(Java Runtime Environment): Java运行环境,包括Java虚拟机和Java程序所需的核心类库等.如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可.JRE:JVM+类库.
- JDK(Java Development Kit): Java开发工具包,提供给Java开发人员使用,包含了Java的开发工具,也包括了JRE.所以安装了JDK,就不用单独安装JRE.其中的开发工具包括编译工具(javac.exe),打包工具(jar.exe)等.JDK:JRE+JAVA的开发工具.
- JDK中包含JRE的原因:开发完的程序,需要运行一下看看效果.
- JDK,JRE,JVM的作用和关系:
- JDK包含JRE和开发工具包
- JRE包含核心类库和JVM
- JVM(Java Virtual Machine): Java虚拟机,Java程序需要运行在虚拟机上,不同平台有自己的虚拟机,因此Java语言可以跨平台.
1.3 常用dos命令
- 打开控制台:
win + R,cmd dir(directory): 列出当前目录下的文件以及文件夹cd(change directory): 改变指定目录(进入指定目录)cd 目录: 进入cd ..: 回退
cls(clear screen): 清屏exit: 退出dos命令行
1.4. 下载安装JDK
1.5. HelloWorld案例
- 执行流程

- 编写代码步骤
- 首先定义一个类
public class 类名 - 在类定义后加上一对大括号
{} - 在大括号中间添加一个主(main)方
public static void main(String [] args){ } - 在主方法的大括号中间添加一行输出语句
System.out.println("HelloWorld!");
- 首先定义一个类
- 代码案例001
运行代码步骤:public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld!"); } }- 在命令行模式中,输入javac命令对源代码进行编译,生成字节码文件
javac HelloWorld.java - 编译完成后,如果没有报错信息,输入java命令对class字节码文件进行解释运行,执行时不需要添加.class扩展名
java HelloWorld
- 在命令行模式中,输入javac命令对源代码进行编译,生成字节码文件
- HelloWorld案例常见问题
- 找不到文件;
- 单词拼写问题;
- 括号匹配问题;
- 中英文问题.
第2章 环境配置
2.1 工具安装
2.2. 环境变量配置
- 为什么要配置
- 程序的编译和执行需要使用到
javac和java命令,所以只能在bin目录下写程序. - 实际开发中,不可能把程序写到bin目录下,所以我们必须让javac和java命令在任意目录下能够访问.
- 程序的编译和执行需要使用到
- 如何配置
- 计算机-右键属性-高级系统设置-高级-环境变量-系统变量;
- 创建新的变量名称:
JAVA_HOME; - 为
JAVA_HOME添加变量值:JDK安装目录; - 在path环境变量最前面添加:
%JAVA_HOME%\bin.
2.3 注释
- 注释概述
- 什么是注释:用于解释说明程序的文字
- Java中注释分类:
- 单行注释:
//注释文字; - 多行注释:
/* 注释文字 */; - 文档注释:
/** 注释文字 */.
- 单行注释:
- 注释的作用:
- 解释说明程序;
- 帮助调试错误.
- 代码案例002
/** 注释:用于解释说明程序的文字 分类: 1. 单行 2. 多行 作用:解释说明程序,提高程序的阅读性 */ //这是我的HelloWorld案例 public class HelloWorld { /* 这是main方法 main是程序的入口方法 所有代码的执行都是从main方法开始的 */ public static void main(String[] args) { //这是输出语句 System.out.println("HelloWorld!"); } }
2.4 关键字
- 关键字概述
- 被Java语言赋予特定含义的单词
- 关键字特点
- 组成关键字的字母全部小写
- 常用的代码编辑器,针对关键字有特殊的颜色标记,非常直观,所以我们不需要去死记硬背,在今后的学习中重要的关键字也会不断的出来.
- 代码案例003:
/** 关键字:被Java语言赋予特定含义的单词 特点: 1. 组成关键字的字母全部小写 2. 常见的代码编辑器,针对关键字有特殊的颜色标记 */ public class HelloWorld { public static void main(String[] args) { System.out.println("HelloWorld!"); } } - 关键字举例:


第3章 语法格式
3.1 常量
- 常量概述
- 在程序执行的过程中,其值不可以发生改变的量
- 常量分类
- 字符串常量:用双引号括起来的内容("HelloWorld")
- 整数常量:所有整数(12,-23)
- 小数常量:所有小数(12.34)
- 字符常量:用单引号括起来的内容('a','A','0')
- 布尔常量:较为特有,只有true和false
- 空常量:null
- 代码案例004
/** 常量:在程序执行的过程中,其值不可以发生改变的量 常量分类: 1. 字符串常量 "HelloWorld" 2. 整数常量 12,-23 3. 小数常量 12.34 4. 字符常量 'a','0' 5. 布尔常量 true,false 6. 空常量 null */ public class ChangLiang { public static void main(String[] args) { //字符串常量 System.out.println("HelloWorld!"); //整数常量 System.out.println(12); System.out.println(-23); //小数常量 System.out.println(12.34); //字符常量 System.out.println('a'); System.out.println('0'); //布尔常量 System.out.println(true); System.out.println(false); } }
3.2 变量
- 变量概述
- 在程序执行的过程中,在某个范围内其值可以发生改变的量
- 从本质上讲,变量其实是内存中的一小块区域
- 变量定义格式
数据类型 变量名 = 初始化值;- 注意:格式是固定的,记住格式,以不变应万变
- 变量图解

3.3 数据类型
-
计算机存储单元 变量是内存中的小容器,用来存储数据.计算机存储设备的最小信息单元叫"位(bit)",又称之为"比特",通常用小写的字母b表示.而计算机最小的存储单元叫"字节(byte)",通常用大写字母B表示,字节是由连续的8个位组成. 常用的存储单位:
- 1B(字节) = 8bit
- 1KB = 1024B
- 1MB = 1024KB
- 1GB = 1024MB
- 1TB = 1024GB
-
数据类型概述和分类
- 为什么有数据类型 Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间.
- Java中数据类型的分类

- 基本数据类型
四类 八种 字节数 数据表示范围 整型 byte 1 ^ short 2 ^ int 4 ^ long 8 浮点型 float 4 ^ double 8 字符型 char 2 表示一个字符,如'a','A','0','家' 布尔型 boolean 1 只有两个值:true和false Tips:1. 整数默认类型是int,浮点数默认类型是double; 2. 定义long类型时,要加L或l;定义float类型数据时,要加F或f.
- 引用数据类型
3.4 标识符
- 标识符概述
- 作用:给包,类,方法,变量等起名字
- 组成规则:由字符,下划线_,美元符$组成;注意事项;不能以数字开头;不能是Java中的关键字
- 命名原则:见名知意
- 包:最好是域名倒过来,要求所有的字母小写
- 类或者接口: 每个单词首字母大写(驼峰规则)
- 方法或者变量:从第二个单词首字母大写(驼峰规则)
- 常量:所有单词大写,用下划线区分每个单词
- 代码案例005
/** 标识符:就是给包,类,方法,变量起名字的符号. 组成规则: 1. unicode字符:数字字符,英文大小写,汉字(不建议) 2. 下划线 _ 3. 美元符 $ Tips: 1. 不能以数字开头 2. 不能是Java中的关键字 命名规则: 1. 基本要求:见名知意 2. 常见的命名 1. 包(其实就是文件夹,用于对类进行管理): 全部小写,多级包用.隔开 举例:com,com.itheima 2. 类: 每个单词首字母大写(驼峰规则) 举例:Student,Car,HelloWorld 3. 方法和变量: 从第二个单词首字母大写(驼峰规则) 举例:age,maxAge,show(),getAge() */ public class BiaoZhiFu { public static void main(String[] args) { //定义变量 //数据类型 变量名 = 初始化值; int a = 10; //正确 int b2 = 20; //错误 //int 2b = 30; //不能是Java中的关键字 //错误 //int public = 40; } }
3.5 定义变量
- 基本数据类型变量的定义和使用
- 变量的定义格式:
数据类型 变量名 = 初始化值; - Tips:
- 定义long类型的数据时,要在数据后面加L;
- 定义float类型的数据时,要在数据后面加F.
- 变量的定义格式:
- 代码案例006
/** 变量的定义格式: 数据类型 变量名 = 初始化值 数据类型: byte,int,short,long,float,double,char,boolean */ public class VariableDemo { public static void main(String[] args) { //定义byte类型的变量 byte b = 10; System.out.println(10); System.out.println(b); //定义short类型的变量 short s = 100; System.out.println(s); //定义int类型的变量 int i = 10000; System.out.println(i); //定义long类型的变量 long l = 1000000000000000L; System.out.println(l); //定义float类型的变量 float f = 12.34F; System.out.println(f); //定义double类型的变量 double d = 12.34; System.out.println(d); //定义char类型的变量 char c = 'a'; System.out.println(c); //定义boolean类型的变量 boolean bb = false; System.out.println(bb); } } - 变量定义的注意事项
- 变量未赋值,不能直接使用;
- 变量只在它所属的范围内有效;
- 一行上可以定义多个变量,但是不建议.
- 代码案例007
/* 变量定义注意事项: 1. 变量未赋值,不能直接使用 2. 变量只在它所属的范围内有效(变量属于它所在的那对大括号) 3. 一行上可以定义多个变量,但是不建议 */ public class VariableDemo2 { public static void main(String[] args) { //定义变量 int a = 10; System.out.println(a); int b; b = 20; //变量在使用前赋值都是可以的 System.out.println(b); { int c = 100; System.out.println(c); } //System.out.println(c); /* int aa,bb,cc; aa = 10; bb = 20; cc = 30; int aa=10,bb=20,cc=30; */ } }
3.6 数据类型转换
- 隐式数据类型转换
- 取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算
- 代码案例008
/* +:是一个运算符,做加法运算的. 我们在做运算的时候,一般要求参与运算的数据类型必须一致. 类型转换: 隐式转换 强制转换 隐式转换 byte,short,char -- int -- long -- float -- double */ public class TypeCastDemo { public static void main(String[] args) { //直接输出了运算的结果 System.out.println(3 + 4); //定义两个int类型的变量 int a = 3; int b = 4; int c = a + b; System.out.println(c); //定义一个byte类型,定义一个int类型 byte bb = 2; int cc = 5; System.out.println(bb + cc); //我能不能不直接输出,用一个变量接受呢? //用变量接受,这个变量应该有类型 //可能损失精度 //byte dd = bb + cc; int dd = bb + cc; System.out.println(dd); } } - 强制类型数据转换
- 强制转换的格式:
b = (byte)(a + b); - 强制转换的注意事项:如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
- 强制转换的格式:
- 代码案例009
/* 强制转换: 目标类型 变量名 = (目标类型) (被转换的数据); 不建议强制转换,因为会有精度的损失. */ public class TypeCastDemo2 { public static void main(String[] args) { int a = 3; byte b = 4; int c = a + b; //byte d = a + b; byte d = (byte) (a + b); } }