平台即操作系统,主要有Windows、Mac、Linux系统
跨平台指的是java程序可以在不同的操作系统上直接运行,具有一次编译,到处运行的特点。
Java程序并非是直接运行的,Java编译器将Java源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行。
==所以在不同的操作系统下,只需安装不同的Java虚拟机即可实现java程序的跨平台。
JVM
java虚拟机, 保证java程序能跨平台。(Java Virtual Machine)
JRE
Java运行环境,包含了JVM和Java的核心类库(核心代码)。(Java Runtime Environment)
想要运行一个已有的Java程序,只需要安装JRE即可。
JDK
Java开发工具,包含了JRE和开发工具。(Java Development Kit)
想要开发一个Java程序, 必须先安装JDK。
总结
我们只需安装JDK即可,它包含了java的运行环境和虚拟机。
将JDK安装到指定目录下,比如E:\develop\java\jdk-11
注意:安装目录下不要有中文或空格等特殊字符。
目录名称 | 说明 |
---|---|
bin | 该路径下存放了JDK的各种工具命令。javac和java就放在这个目录。 |
conf | 该路径下存放了JDK的相关配置文件。 |
include | 该路径下存放了一些平台特定的头文件。 |
jmods | 该路径下存放了JDK的各种模块。 |
legal | 该路径下存放了JDK各模块的授权文档。 |
lib | 该路径下存放了JDK工具的一些补充JAR包。jar包:写好并打包的java程序。 |
操作 | 说明 |
---|---|
盘符名称: | 盘符切换。E:回车,表示切换到E盘。 |
dir | 查看当前路径下的内容。 |
cd 目录 | 进入单级目录。cd develop,表示进入develop文件夹。 |
cd … | 回退到上一级目录。 |
cd 目录1\目录2… | 进入多级目录。cd develop\java,表示进入develop下的java文件夹。 |
cd\ | 回退到盘符根目录。 |
cls | 清屏。 |
cls | 退出命令提示符窗口。 |
DOS命令进入JDK的bin目录,运行javac和java
javac 编译代码
javac 文件名
java 运行程序
java 程序名称
可以在任意路径下使用JDK的bin目录下提供的开发工具。
1、此电脑—>属性—>高级系统设置—>高级—>环境变量
2、新建系统变量
变量名:JAVA_HOME
变量值:JDK的安装目录(到bin目录的上一层)
3、将 %JAVA_HOME%\bin 添加到Path变量中。 %环境变量名% 引用某指定的环境变量
4、打开DOS系统,输入javac,验证是否配置成功。
编写代码:编写.java后缀的源文件
编译代码:将.java文件编译成.class后缀的字节码文件 javac
运行程序:使用 java工具运行编译好的字节码文件 java
编译命令 :javac 源文件名.java javac HelloWorld.java
运行程序: java 类名 java HelloWorld
新建文本文档,修改名称为HelloWorld.java
编辑并保存HelloWorld.java文件
打开命令行窗口,将目录切换至java文件所在目录,编译并执行。
编译命令:javac HelloWorld.java
运行命令:java HelloWorld
public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld");
}
}
1)、中文符号问题。(java中的符号都是英文的)
2)、单词大小写问题。(java是区分大小写的)
3)、文件扩展名问题。(java源文件扩展名为.java)
4)、文件名和类名不一致问题。(public限制java文件名和类名要一致)
设置 --> 首选项 --> 新建,格式选择Windows,编码选择ANSI。
/*
练习: 使用java程序,在屏幕上输出自己的姓名
*/
public class HelloName{
public static void main(String[] args){
System.out.println("林志玲");
}
}
注释是对程序的解释说明文字,可以提高程序的可读性。
单行注释 // 注释内容 ,可以嵌套
多行注释 /* 注释内容,不可以嵌套 */
文档注释 /** 注释内容 ,不可以嵌套*/
在java语言中有特殊意义的英文单词。
单词全部小写。
在高级开发工具中,关键字都会有特殊的颜色标记。
常量的值一旦确定,在程序运行过程中不允许改变。
字符串常量:使用双引号 "" 括起来的0到多个字符。 "java" ,"黑马程序员" , "我"
字符常量:使用单引号 '' 括起来的单个字符。 'a' , '0' ,'我'
整数常量:正负整数 10 -20
小数常量:带小数点的数字 -3.14 5.12
布尔常量:表示真或假,只有true或false两个值。
空常量:值为null,不能使用输出语句直接输出。 (引用类型的默认值)
案例代码
public class ChangLiang1{
public static void main(String[] args){
// 字符串常量:使用双引号 "" 括起来的【0到多个字符】。
System.out.println("java");
System.out.println("我");
System.out.println("");
System.out.println(" ");
System.out.println("-------------");
// 字符常量:使用单引号 '' 括起来的【单个字符】。
System.out.println('A');
System.out.println('我');
//System.out.println('');编译报错,字符常量必须是单个字符
System.out.println(' '); //空格字符
//System.out.println(' '); 编译报错,字符常量必须是单个字符
System.out.println("-------------");
// 整数常量:正负整数
System.out.println(10);
System.out.println(-10);
// 小数常量:带小数点的数字
System.out.println(-10.9);
System.out.println(5.12);
// 布尔常量:表示真或假,只有true或false两个值。
System.out.println(true);
System.out.println(false);
// 空常量:值为null,不能使用输出语句直接输出。学习数组的时候会讲解
//System.out.println(null); //编译错误,不能使用输出语句直接输出空常量
}
}
/*
需求:使用常量在屏幕上输出一个学生的信息,包含姓名、性别、年龄、身高、地址。
*/
public class ChangLiang2{
public static void main(String[] args){
//姓名 :字符串常量
System.out.println("林志玲");
//性别 :字符常量
System.out.println('女');
//年龄 : 整数常量
System.out.println(32);
//身高 : 小数常量
System.out.println(172.5);
//地址 :字符串常量
System.out.println("中国香港");
}
}
位(bit) : 计算机表示数据的最小单位 , 通常用小写字母 b 表示.
字节(byte) : 计算机存储数据的基本单位 , 通常用大写字母 B 表示.
常用储存单位的换算:
1B(字节) = 8bit(位)
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
【练习题】下面哪些是Java中的基本数据类型?( ADE )
基本类型都是关键字:单词都是小写
A.byte
B.Byte //byte的包装类
C.String //字符串,引用类型
D.char
E.long
在程序运行过程中,其值可以发生改变的量。
从本质上讲,变量是内存中的一小块区域,其值可以在一定范围内变化。
数据类型 变量名 = 变量值;
/*
需求:使用变量定义并输出一个学生的信息,包含姓名、性别、年龄、身高、地址。
*/
public class BianLiangTest{
public static void main(String[] args){
//姓名
String name = "林志玲";
System.out.println(name);
//性别、
char xingbie = '女';
System.out.println(xingbie);
//年龄、
int age = 32;
System.out.println(age);
//身高、
double height = 172.5;
System.out.println(height);
//地址
String address = "中国香港";
System.out.println(address);
}
}
1、变量可以先定义,再赋值
数据类型 变量名;
变量名 = 初始化值;
2、一行代码上可以同时定义多个变量。(不推荐)
数据类型 变量名1 = 初始化值, 变量名2 = 初始化值;
public class BianLiangDemo{
public static void main(String[] args){
//数据类型 变量名 = 初始化值;
// int a = 10;
// System.out.println(a);
//变量可以先定义,再赋值
// int a;
// a = 10;
// System.out.println(a);
//一行代码上可以同时定义多个变量。(不推荐)
int a = 10, b = 20 ;
System.out.println(a);
System.out.println(b);
}
}
1、在同一对大括号中,变量名不能重复。
2、没有初始化的变量不能直接使用。
3、定义long类型变量时,如果超出int的范围,需要加L或者l,建议加L。
4、定义float类型的时候需要在数字后面加F或者f,建议加F。
public class BianLiangDemo3{
public static void main(String[] args){
int a = 10;
//byte a = 20; //编译报错,变量名重复
int b;
//System.out.println(b); //编译报错,变量b没有初始化,不能直接使用
//long c = 10000000000; //编译报错,变量c的值超过了int的范围
long c = 10000000000L; //建议在long类型值后面加上L,避免数值过大而报错
//float f = 3.14; //编译报错,小数默认是double类型
float f = 3.14F; //float类型的变量值需要加上F或者f,建议加F
}
}
给包,类,方法,变量起名的符号。
大小写字母、数字、下划线_、美元符$ 、中文(不推荐)
注意事项:
不能是数字开头
不能是关键字
区分大小写
小驼峰式命名:变量名、方法名
第一个单词首字母小写,从第二个单词开始每个单词的首字母大写。(number , maxValue)
大驼峰式命名:类名
每个单词的首字母都大写。(String, ArrayList)
建议:标识符的起名尽量做到见名知意。
【练习题】下列不可作为java语言变量名的是( DEF )
//大小写字母,数字, 下划线 ,美元符
//不能是数字开头,不能是关键字,区分大小写
A、a1
B、$1
C、_1
D、5a //不能是数字开头
E、num@ //特殊符号只能是下划线 ,美元符,@不符合规范
F、class //不能是关键字,但是class是关键字
G、String //可以的,但是及其不建议
从【范围大】的类型到【范围小】的类型的转换,需要进行强制类型转换。
格式:
目标数据类型 变量名 = (目标数据类型)变量或常量;
弊端:
会造成数据精度丢失。尽量少用强制转换。
//类型转换案例代码
public class ChangeDemo{
public static void main(String[] args){
// 自动类型转换
double d = 10; //10默认是int类型,转为较大范围的double类型,属于自动类型转换。
byte b = 15;
int a = b; //byte类型转int类型,属于自动类型提升。
long num1 = 19L;
float f = num1; //long类型变量赋值给float类型变量,属于自动类型转换
// 强制类型转换
//int a2 = 88.8; //编译报错,88.8默认是double,8个字节,int占4个字节
int a2 = (int)88.8;
System.out.println(a2); //打印结果为88,精度丢失
int a3 = 130;
byte b3 = (byte)a3;
System.out.println(b3);
}
}
【多选题】以下关于数据类型的转换,说法正确的是(A C)
A:long num = 100L;
float f = num;
System.out.println(f);
以上代码能正常编译运行,并输出100.0
B:int类型的数据转为double类型,需要强制转换。 //错误的,int转double ,属于自动类型转换,不需要强转
C:int类型转成short砍掉2个字节,可能造成数据丢失。//int占4字节,short占2字节,强转,会造成精度丢失
D:byte b = 130; //编译错误,130超过了byte的范围 -128~127
System.out.println(b);
以上代码能正常编译运行,并输出130
1、能够说出JDK,JRE,JVM各自的作用和关系
2、能够完成HelloWorld案例的编写及运行
3、能够使用注释对程序进行说明
4、能够知道关键字的特点
5、能够知道常量的分类
6、能够说出8种基本数据类型
7、能够完成变量的定义及输出
8、能够知道类型转换的格式和顺序
jdk-11_windows-x64_bin
Notepad++