JDK 和 JRE 的区别和联系?
(1)JDK:Java Development Kit,它是 Java 开发工具集,提供了 Java 开发环境和运行环
(2)JRE:Java Runtime Environment,Java 的运行环境。
(3)JDK 中包含了 JRE。
Java语言的跨平台性:
(1)平台指的是操作系统(Windows,Mac,Linux)。
(2)Java程序可以在任意的操作系统上面运行。
(3)它实现跨平台运行依赖Java的虚拟机JVM(Java Virtual Machine)。
Java程序执行流程:
(1)源文件:编写源文件,它的扩展名 .java。
(2)编译:通过编译器把源文件编译成字节码文件,也就是扩展名为.class的文件。 javac.exe
(3)运行:使用解释器来运行字节码文件。 java.exe
编写源程序的代码:
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello Wrold");
}
}
注意点:
(1)区分英文字母大小写,Java对大小写比较敏感。
(2)区分中英文标点符号,统一全部使用英文标点符号。
基本数据类型的 4 类 8 种:
对于整数类型的数字在 Java 中默认是 int 类型,即使该数值超出了 int 类型能够表示的数据范围, 对于小数类型的数字在 Java 中默认是 double 类型。
各种数据类型按 照数据范围从小到大:byte -> short -> int -> long -> float -> double
123123123123 超出了 int 类型表示的范围,理论上讲应该属于 long 类型,这样写是错误的,如果要表 示 long 类型的,需要在后面加上 L(大小写都可以,为了区分1和L,一般用大写)。
Java 中的小数后面加不加 ”D“ 都表示的是 double 类型的,如果要表示 float 类型的常量,需要在小 数后面加上 ”F“。
Java中的数据量分为常量和变量:
常量就是不变的数据量,任何数据量都有其类型,如整数常量 100;
变量是程序中最基本的存储单元,用于存储数据,变量由变量名、变量类型和作用域组成,它们在内存中占据一定的空间,用于存储特定类型的数据(每个人都有名字,我们可以把“名字”理解为变量名,而具体“叫什么”就是数据;)。
变量定义:数据类型 变量名 = 数据值(如 int i = 100);
变量声明:数据类型 变量名(如 int i);
注意:
变量的作用域:声明的变量的作用范围在一对花括号之内;
同一个变量不能够反复声明,或者说变量名不能够重复;
变量跟变量所对应的值,它们之间的类型要匹配;
定义数据类型后的默认值
基本类型的转换
自动类型转换:把某种范围小基本类型的值直接赋值给另一种范围大基本类型的变量,这种方式叫做自动转换(如:范围大的数据类型 变量 = 范围小的数据类型值)。
强制类型转换:把某种范围大基本类型的值直接赋值给另一种范围小基本类型的变量,这种方式叫做强制转换(如:范围小的数据类型 变量 = (范围小的数据类型) 范围大的数据类型值);
表达式类型的自动提升
当一个算数表达式中包含多个基本类型的值时,整个算数表达式的数据类型将发生提升。
操作数的等级排列如下图所示,右边的等级高于左边的等级。
byte b1=3;
byte b2=2;
byte b3=b1+b2;
//这样没有输出结果,编译会报错。
//在运算期间,b1和b2被自动提升到int类型,因此:
byte b3 = (byte)(b1+b2);
算术运算符
算术运算符主要用来计算数据的符号,数据可以是常量,也可以是变量。被运算符操作的数我们称 之为操作数。
赋值运算符
赋值运算符就是为变量进行赋值的符号。
比较运算符
比较运算符,又叫做关系运算符,用来判断两个操作数的大小是否是相等关系的,结果是布尔类型的 值 true 或者 false。
逻辑运算符
逻辑运算符使用判断逻辑上面的真或者假,或者说是进行布尔值值运算的,结果为布尔值 true 或者 false。
&与&&的区别?
(1)& 表示与,而 && 表示短路与,他们都能够进行逻辑运算。
(2)& 运算符要先判断两边的运算结果,再进行逻辑判断。
(3)&& 运算符如果判断出左边的运算结果为 false 时,不会再判断运算符右边的运算结果。因为无论 右边的判断结果为 true 还是 false,最终的逻辑运算结果都为 false。
(4)&& 短路与比 & 与运算效率高。
注意点:
(1)短路与 &&:参与运算的两边数据,有 fasle,则最终运算结果就为 false。
(2)短路或||:参与运算的两边数据,有 true,则最终运算结果就为 true。
(3)逻辑非! :参与运算的数据,原先为 true 则变成 false,原先为 false 则变成 true。
(4)异或^ :两边结果相同,则最后结果为 false,否则为 true。
三元运算符
格式:(条件表达式) ?表达式1:表达式2;
运算规则: 先判断条件表达式的值,如果为 true,则运算结果为冒号左边的结果(表达式1 的结果),如果为 false,则运算结果为冒号右边的结果(表达式2 的结果)。
运算符优先级
(圆括号的优先级最高,凡是要想让谁先运算,就加圆括号)
流程控制语句
程序的三大基本结构: 顺序结构,选择结构,循环结构。
顺序结构:程序中的各个操作安装它们在源代码中的排列顺序依次执行。
选择结构:表示程序要根据某个条件去选择其中的某一个分支去执行。主要有 if分支结构(单选、双选、多选)、Switch分支结构。如
if分支结构:
if(条件1){
执行语句;
}else if(条件2){
执行语句;
}else if(条件3){
执行语句;
}
.....
else{
执行语句;
}
Switch分支结构:
switch (条件) {
case "结果1":{
执行语句;
break;
}
case "结果2":
执行语句;
break;
case "结果3":
执行语句;
break;
...
default:
执行语句;
break;
}
对于匹配到多个case之后,执行的代码块内容是完全相同的,我们可以把多个case写到一起,最后
只写一个执行代码块,如。
switch (条件) {
case "结果1":
case "结果2":
case "结果3":
执行语句;
break;
case "结果4":
执行语句;
break;
default:
执行语句;
break;
}
循环结构:表示程序反复执行某一个或者某一些操作,直到满足某个条件的时候,反复操作停止。主要有 for循环、while循环。如
for循环:
for(①初始值;②判断语句;④迭代语句){
③执行代码块;
}
while循环:
1)当型结构
while(①条件){
②执行代码块;
}
2)直到型结构
do{
①执行代码块;
}while(②条件);
无限循环(死循环):
方式1:
for(;;){
}
方式2:
while(true){
}
循环控制(break、continue):
break关键字:1、结束break所在的当前循环;如果是多层循环,结束的是最内层的循环;
2、给循环加标记 使用break关键字,结束的是最内层的循环,无法结束外出的循环,我们可以给外出循环加个标签, 通过break 标签;的方式去结束外层循环。如
flag:for(int i = 0;i < 50;i++) {
for(int j = 0;j < 50;j++) {
执行语句;
if(i == 20) {
break flag;
}
}
}
continue关键字: 本次循环continue后面的代码不再执行,直接进入下一轮循环。如
for(int i = 0;i < 100;i++) {
if(i%3 == 0) { //当i能够被3整除的时候,后面的执行语句不执行,直接进入下一次循环
continue;
}
执行语句;
}
结束...