沧州网站设计报价手机怎么做3d短视频网站
1 关键字
关键字:被Java语言赋予了特殊含义,用作专门用途的字符串(或单词)。如class、public、static、void等,这些单词都被Java定义好了,称为关键字。

- 特点:关键字都是小写字母;
 - 官方地址:Java Language Keywords (The Java™ Tutorials > Learning the Java Language > Language Basics)
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html 
2 标识符
标识符:Java中变量、方法、类等要素命名时使用的字符序列,称为标识符。简单的说凡是可以自己命名的地方法都是标识符,如类名、方法名、变量名等等。
标识符命名规则:必须遵守,不遵守会报错
- 由26个英文字母大小写,0-9,_或$组成;
 - 不能包含空格,不能以数字开头;
 - 不能与关键字或保留字相同;
 - 严格区分大小写,长度不限;
 - 定义标识符时要“见名知意”。
 

标识符命名规范:建议遵守,不遵守也可以,但遵守了显得更专业
- 包名:多单词组成时所有字母都小写:xxxyyyzzz。如java.lang
 - 类名、接口名:多单词组成时所有字母的首字母大写:XxxYyyZzz。如Hello
 - 变量名、方法名:多单词组成时第一个单子首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz。如bookName
 - 常量名:所有字母都大写,多单词组成时每个单词之间用下划线链接:XXX_YYY_ZZZ。如MAX_VALUE
 
3 变量
变量:内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化。
- 变量三要素:数据类型、变量名、存储的值
 - Java中变量声明的格式:数据类型 变量名 = 变量值;
 - 变量的作用:在内存中保存数据
 - 变量都有作用域,只在作用域内生效,同一作用域内变量不能重名
 
class VariableTest{public static void main(String[] args) {//变量的声明//分步式:先声明,再初始化char gender;gender = '男';//一步式:声明同时初始化int age = 18;//变量的使用,直接调用变量名System.out.println(gender+""+age);}
} 
4 数据类型

表数范围计算公式

整型
- 整数类型包括byte、short、int、long;
 - 注意:
 
1. 声明整型变量时遵守保小不保大,数据类型能小则小;
2. 整型常量默认为int占用空间更小,声明long型常量须后加l或L;
- 各整数类型有固定的表数范围和占用存储空间:  

 
浮点型
- 整数类型包括float、double;
 - float:单精度,尾数可以精确到7位有效数字;
 - double:双精度,精度是float的两倍;
 - 注意: 浮点型型常量默认为double精度更高,声明float型常量须后加f或F;
 - 浮点型表数范围和占用空间: 

 
- 浮点型常量的两种表示形式:
 
- 十进制形式。如5.12 512.0f .512(必须有小数点)
 - 科学计数法形式。如5.12e2 512E2 100E-2
 
关于浮点型精度的说明:
- 不是所有小数都可以精确的使用二进制浮点数表示。二进制浮点不能精确的表示0.1、0.01、0.001这样10的负次幂。
 - 浮点型float、double的数据不适合在不容许舍入误差的金融计算领域,如果需要精确数字计算或保留指定位数的精度,需要使用BigDecimal类。
 - 浮点在机器中存放的形式,浮点数=符号位+指数位+尾数位。浮点数float超出存储空间的值会被丢掉
 - 演示:
 
// 1.float精度不高,超出存储范围的部分会被丢掉
float num1 = 2.1234567851f;
double num2 = 2.1234567851f;
System.out.println("float=" + num1 + "\ndouble=" + num2);
// 2.二进制浮点数不能准确的表示0.1、0.01、0.001等10的负次幂的数
System.out.println(0.1 + 0.2);
// 3.浮点型使用陷阱
double num3= 2.7;
double num4=8.1/3;
System.out.println(num3 == num4);
float  f1 = 123123123f;
float f2 = f1+1;
System.out.println(f1);
System.out.println(f2);
System.out.println(f1== f2); 
应用案例:
案例1:定义圆周率并赋值为3.14,现在3个圆的半径分别为1.2、2.5、6,求他们的面积
/*** @author shbzhao* @version 1.0* @date 2023/8/26-0:34* @description 定义圆周率并赋值为3.14,现在3个圆的半径分别为1.2、2.5、6,求他们的面积*/
public class FloatDoubleExer {public static void main(String[] args) {double PI = 3.14; //圆周率double radius1 = 1.2;double radius2 = 2.5;double radius3 = 6;System.out.println("第1个圆的面积=" + PI * radius1 * radius1);System.out.println("第2个圆的面积=" + PI * radius2 * radius2);System.out.println("第3个圆的面积=" + PI * radius3 * radius3);}
} 
案例2:将华氏温度转为摄氏温度(℃):℃=(℉ - 32) / 1.8
/*** @author shbzhao* @version 1.0* @date 2023/8/26* 将华氏温度转为摄氏温度(℃):℃=(℉ - 32) /1.8*/
public class FloatDoubleExer02 {public static void main(String[] args) {double hua = 80.0;double she = (hua-32)/1.8;System.out.println("华氏度"+hua+"℉=摄氏度"+she+"℃");}
} 
字符型
- char类型数据用来表示通常意义上“字符”(占2字节)
 - 字符型变量的三种表现形式:
 
- 形式1:使用单引号('')括起来的单个字符。如:char c1 = 'a'; char c2 = '男'; char c3 = 9;
 - 形式2:直接使用Unicode值来表示字符常量:‘\uXXXX’。其中,XXXX表示一个十六进制整数。如:\u0023 表示'#'。
 - Java中还允许使用转义字符'\',来将其后的字符转变为特殊字符型常量。如:char c4 = '\n';,'\n'表示换行符
 - char类型是可以进行运算的,它都对应有Unicode码,可以看作是一个数值,ASCII码值。
 
- 演示:
 
/*** @author shbzhao* @version 1.0* @date 2023/8/26*/
public class CharBooleanTest {public static void main(String[] args) {//1.字符类型 char(2字节)//2.表示形式//2.1 使用单引号('')括起来的单个字符char c1 = 'a';char c2 = '1';char c3 = '男';char c4 = '@';//2.2 直接使用Unicode值来表示字符常量:'\'uXXXX'。其中,XXXX表示一个十六进制整数。char c5 = '\u0036'; //表示后买你System.out.println(c5);//2.3使用转义字符'\',来将其后的字符转变为特殊字符型常量。char c6 = '\n';//2.4char类型是可以进行运算的,它都对应有Unicode码,可以看作是一个数值,ASCII码值char c7 = 97;System.out.println(c7);}
} 
布尔型

- 布尔类型(boolean),只有两个值true、false;
 - 常用于逻辑条件的判断,如条件判断、分支结构、循环结构等;
 -  
演示:
 
// 布尔类型(boolean) 1字节
// 1.只有两个值true和false
boolean b1 = true;
boolean b2 = false;
// 不能使用0和1代替true和false
// boolean b3 = 0; //编译不通过// 常用于条件判断或循环语句中
boolean isStudent = true;
if (isStudent){System.out.println("是学生");
}else{System.out.println("不是学生");
} 
5 数据类型之间的转换
自动类型提升

- 自动类型转换:数据类型表数范围的自动提升
 - 类型转换规则: 
- 容量较小的类型自动转换为容量大的数据类型(容量是指表数范围的大小);
 - byte、short、char之间运算后为int类型;
 - char不能与short、int转换。
 
 
- 演示:
 
/*** @author shbzhao* @version 1.0* @date 2023/8/27* 演示基本数据类型之间的类型转换* 包括:*      1.自动 类型转换(数据类型的精度\表数提升)*      2.强制 类型转换* 类型转换规则:容量是指数据类型(表数范围)的大小* 1.容量较小的类型赋值给容量较大的类型时,结果自动转换为容量大的数据类型* 	byte ---> short ---> int ---> long ---> float ---> double* 2.byte、short char之间运算后为int类型:(特殊情况1)*  byte + short ---> int,byte + byte---> int,short + short ---> int* 3.char不能与short、int转换(特殊情况2)*/
public class BasicDataSwitch {public static void main(String[] args) {// 容量是指表数范围的大小// 如long型占8字节,float型占4字节,但是表述范围float更大long l1 = 115431543L;float f1 = l1;float f2 = 2.45465412f;//long l2 = f2; // 编译报错// byte ---> int  okbyte b1 = 1;int i1 = b1 + b1;// int ---> byte//byte b2 = i1 + i1; // 编译报错// 特殊情况1:byte + short ---> intbyte b3 = 11;short s1 = 12;//short s2 = s1+b3; // 编译报错int i2 = s1 + b3;//  特殊情况2:char不能与byte、short进行类型转换char c1 = 10;//byte b4 = c1; // 编译报错//short s2 = c1; // 编译报错}
} 
强制类型转换
- 强制类型转换:将取值范围(或容量)大的类型强制转换为取值范围小(或容量小的类型)。
 - 强制类型转换符:"()",在小括号内指定要转换为的数据类型。
 - 强制类型转换可能会导致精度损失。
 - 演示:
 
/*** @author shbzhao* @version 1.0* @date 2023/8/28* 演示强制类型转换的使用* 规则:*      1.如果需要将容量大的赋值给容量小的类型,需要进行强制类型转换*      2.强制类型转换符:"()",在小括号内指定要转换为的数据类型*      3.强制类型转换可能会导致精度损失*/
public class ForceTypeSwitch {public static void main(String[] args) {// 自动类型提升 int ---> doubledouble d1 = 12;// 尝试double ---> int,编译错误//int i1 = d1;int i2 = (int) d1;System.out.println(i2);long l1 = 666;short s1 = (short) l1;System.out.println(l1);// 精度损失double d2 = 12.3;int i3 = (int) d2;System.out.println(i3);int i4 = 128;byte b1 = (byte) i4;System.out.println(b1);}
} 
6 基本数据类型与String类型转换
- 基本数据类型-->String类型:使用包装类的parse方法。
 - String类型-->基本数据类型:使用双引号""拼接。
 - 注意:String类型-->基本数据类型时,String数据的格式必须是能够转换的基本数据类型
 - 演示:
 
/*** @author shbzhao* @version 1.0* @date 2023/8/28* 演示String与基本数据类型之间的转换* 1.基本数据类型-->String类型(使用包装类的parse方法)* 2.String类型-->基本数据类型(使用双引号""拼接)*/
public class StringToBasic {public static void main(String[] args) {// 基本数据类型-->String类型(使用包装类的parse方法)int n1 = 100;float f1 = 1.1f;double d1 = 4.5;boolean b1 = true;String s1 = n1 + "BasicToString";String s2 = f1 + "BasicToString";String s3 = d1 + "BasicToString";String s4 = b1 + "BasicToString";System.out.println(s1);System.out.println(s2);System.out.println(s3);System.out.println(s4);// String类型-->基本数据类型(使用双引号""拼接)// 需要通过基本数据的包装类调用parseXX方法String byteStr = "127";byte b2 = Byte.parseByte(byteStr);String shortStr = "123";short sh2 = Short.parseShort(shortStr);String intStr = "321";int int2 = Integer.parseInt(intStr);String longStr = "321123321";long long2 = Long.parseLong(longStr);String floatStr = "12.3";float float2 = Float.parseFloat(floatStr);String doubleStr = "12.3";double double2 = Double.parseDouble(doubleStr);//char类型调用charAt(0)方法String charStr = "12.3";char char2 = charStr.charAt(0);String booleanStr = "true";boolean boolean2 = Boolean.parseBoolean(booleanStr);System.out.println(b2 + " " + sh2 + " " + int2 + " " + long2 + " " + float2 + " " + double2 + " " + char2 + " " +boolean2);}
} 
7 进制运算
进制的分类
- 十进制(decimal) 
- 数字组成:0-9
 - 进位规则:满10进1
 
 - 二进制(bindary):以0b或0B开头 
- 数字组成:0-1
 - 进位规则:满2进1
 
 - 八进制(octal):很少使用,以数字0开头 
- 数字组成:0-7
 - 进位规则:满8进1
 
 - 十六进制(bindary):以0x或0X开头 
- 数字组成:0-9和a-f。a-f不区分大小写
 - 进位规则:满16进1
 
 - 演示:
 
/*** @author shbzhao* @version 1.0* @date 2023/8/28* 演示二进制数* 用四种进制表示数字20*/
public class BinaryTest {public static void main(String[] args) {// 十进制int num1 = 20;// 二进制int num2 = 0b10100;// 八进制int num3 = 024;// 十六进制int num4 = 0x14;System.out.println(num1);System.out.println(num2);System.out.println(num3);System.out.println(num4); }
} 
进制的转换
|   十进制  |   二进制  |   八进制  |   十六进制  | 
|   1  |   1  |   1  |   1  | 
|   2  |   10  |   2  |   2  | 
|   3  |   11  |   3  |   3  | 
|   4  |   100  |   4  |   4  | 
|   5  |   101  |   5  |   5  | 
|   6  |   110  |   6  |   6  | 
|   7  |   111  |   7  |   7  | 
|   8  |   1000  |   10  |   8  | 
|   9  |   1001  |   11  |   9  | 
|   10  |   1010  |   12  |   a  | 
|   11  |   1011  |   13  |   b  | 
|   12  |   1100  |   14  |   c  | 
|   13  |   1101  |   15  |   d  | 
|   14  |   1110  |   16  |   e  | 
|   15  |   1111  |   17  |   f  | 
|   16  |   10000  |   20  |   10  | 
其它进制转十进制:
- 二进制转十进制:从最低位(右边)开始,将每一位上的数提取出来,乘以2的(位数-1)次方。位数是指从右边数第几位。如0b1011=1*2^(4-1) + 0*2^(3-1) + 1*2^(2-1) + 1*2^(1-1)。
 - 八进制转十进制:从最低位(右边)开始,将每一位上的数提取出来,乘以8的(位数-1)次方。
 - 十六进制转十进制:从最低位(右边)开始,将每一位上的数提取出来,乘以16的(位数-1)次方。
 
十进制转其它进制:将十进制连续除以其它进制数,直到商为0,取每步的余数倒置就是对应的进制数。
- 十进制转二进制:十进制数连续除以2,直到商为0,取每步的余数倒置
 - 十进制转八进制:十进制数连续除以8,直到商为0,取每步的余数倒置
 - 十进制转十六进制:十进制数连续除以16,直到商为0,取每步的余数倒置
 
二进制转八、十六进制:
- 二进制转八进制:将二进制数的每3位为一组(从右开始个位数的值分别是4、2、1),每一组对应转换为一个8进制数。
 - 二进制转十六进制:将十六进制的每4位为一组(从右开始个位数的值分别是8、4、2、1),每一组对应转换为一个16进制数。
 
8 运算符
运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等等。
运算符的分类:算术运算符、赋值运算符、比较(或关系)运算符、逻辑运算符、位运算符、条件运算符、Lambda运算符。
|   分类  |   运算符  | 
|   算术运算符(7个)  |   + - * / % ++ --  | 
|   赋值运算符(12个)  |   = += -= *= /= %= >>= <<= >>>= &= |= ^=  | 
|   比较(或关系)运算符(6个)  |   > >= < <= == !=  | 
|   逻辑运算符(6个)  |   & | ^ ! && ||  | 
|   位运算符(7个)  |   & | ^ - << >> >>>  | 
|   条件运算符(1个)三元运算符  |   条件表达式?表达式1:表达式2;  | 
|   Lambda运算符(1个)  |   ->(Java新特性章节讲解)  | 
算术运算符
|   运算符  |   功能  |   范例  |   结果  | 
|   +  |   正号  |   +3  |   3  | 
| - |   负号  |   b=4; -b;  |   -4  | 
|   +  |   加  |   5+5  |   10  | 
|   -  |   减  |   6-4  |   2  | 
|   *  |   乘  |   3*4  |   12  | 
|   /  |   除  |   5/5  |   1  | 
|   %  |   取模(取余)  |   7%5  |   2  | 
|   ++i  |   自增(前):先自增,后赋值  |   a=2;b=++a;  |   a=3;b=3  | 
|   i++  |   自增(后):先赋值,后自增  |   a=2;b=a++  |   a=3;b=2  | 
|   --i  |   自减(前):先自减,后赋值  |   a=2;b=--a  |   a=1;b=1  | 
|   i--  |   自减(后):先赋值,后自减  |   a=2;b=a--  |   a=1;b=2  | 
|   +  |   字符串拼接  |   "Hello"+"world"  |   "Helloworld"  | 
赋值运算符
赋值运算符是将某个运算后的值赋给指定的变量。
- 基本赋值运算符:"=",如int n = 1;; 
- 当"="两边数据类型不一致时,可以使用自动类型提升或强制类型转换进行处理;
 
 - 复合赋值运算符:+=、-+、*=、/=、%=,如n += 3;等价于n = n + 3;; 
- 注意:复合赋值运算符会进行类型转换,底层具有强制类型转换符。
 
 - 演示:
 
/*** @author shbzhao* @version 1.0* @date 2023/8/28* 演示赋值运算符*/
public class SetValueTest {public static void main(String[] args) {int n = 10;// 1.当"`=`"两边数据类型不一致时,可以使用`自动类型提升`或`强制类型转换`进行处理long l1 = n; // 自动类型提升byte b1 = (byte) n; // 强制类型转换// 2.允许连续赋值int a, b;a = b = 100;// 3.复合赋值运算符会进行`类型转换`,底层具有`强制类型转换符`byte n1 = 12;n1 += 3; // 等价于n1=(byte)(n1+3),强制类型转换为intSystem.out.println(n1);}
} 
- 练习1:
 
int n = 10;
n += (n++) + (++n); // 等价于n = n + (n++) + (++n)
// num = 10 + 10 + 12,先计算n++和++n
System.out.println(n); 
关系运算符
关系运算符的结果都是boolean类型true或false。
- 关系运算符:>、>=、<、<=、==、!=;
 - ==和!=适用于基本数据类型和引用数据类型,其它只适用于基本数据类型;
 - 注意:=是赋值运算符,==是关系运算符
 
|   运算符  |   功能  |   范例  |   结果  | 
|   ==  |   等于  |   8 == 7  |   false  | 
|   !=  |   不等于  |   8 != 7  |   true  | 
|   >  |   大于  |   8 > 7  |   true  | 
|   >=  |   大于等于  |   8 >= 7  |   true  | 
|   <  |   小于  |   8 < 7  |   false  | 
|   <=  |   小于等于  |   8 <= 7  |   false  | 
|   A instanceof B  |   检测A是否为B类的对象  |   "ahhlt" instanceof String  |   true  | 
逻辑运算符
逻辑运算符只对boolean类型进行操作,结果也是boolean类型的值。
|   运算符  |   功能  | 
|   &和&&  |   表示"且"关系,符号两边同时为true时,结果为true。助记:同1为1,1为true,0为fasle  | 
|   |和||  |   表示"或"关系,符号两边只要有一个为true,结果为true。助记:有1为1  | 
|   !  |   表示"非"关系,变量的值为true时,结果为false。助记:取反  | 
|   ^  |   表示"异或"关系,符号两边的值不同时,结果为true。助记:有同为0,不同为1  | 
逻辑运算与短路运算的区别:
- 短路与(&&)和逻辑与(&): 
- 短路与(&&):条件1 && 条件2,若条件1为false,则不再判断条件2。
 - 逻辑与(&):条件1 & 条件2,若条件1为false,继续判断条件2。
 - 注意:开发中一般使用短路与,除非特定情况才使用逻辑与。
 
 - 短路或(||)和逻辑或(|): 
- 短路或(||):条件1 || 条件2,若条件1为true,则不再判断条件2。
 - 逻辑或(|):条件1 | 条件2,若条件1为true,继续判断条件2。
 
 
三元运算符
- 语法格式:(条件表达式)?表达式1:表达式2
 - 运算规则:如果条件表达式的值为true,运算结果为表达式1,否则为表达式2
 - 表达式1和表达式2必须是可以赋给接收变量的类型(可以自动转换或语法强转)
 
/*** @author shbzhao* @version 1.0* @date 2023/8/28* 条件表达式的使用*/
public class ConditionTest {public static void main(String[] args) {int a = 10;int b = 99;int result = (a > b) ? a++ : b--;// a > b为false,返回第二个表达式b--,先将b的值返回,b再自减System.out.println("result= " + result);System.out.println("b= " + b);// 表达式类型与接收变量类型不同时,必须满足类型自动转换或者强制转换int c = a > b ? (int)1.1 : (int)2.2;}
} 
位运算符
位运算
- 计算机进行运算时,都是对补码进行运算,显示运算结果时将计算后的补码转为原码;
 - 正数的原码、反码、补码都相同,称三码合一;
 - 负数的三码: 
- 反码:原码除符号位不变,其它位取反
 - 补码:反码+1。相应的:负数的反码= 补码-1
 - 符号位:二进制的最高位(最左边)为符号位,0代表正数,1代表负数
 
 
位运算符
以二进制补码进行运算
|   运算符  |   功能  | 
|   &  |   按位与,全1为1  | 
|   |  |   按位或,有1为1  | 
|   ^  |   按位异或,不同为1,相同为0  | 
|   ~  |   按位取反,每位都取相反值  | 
|   <<  |   左移,符号位不变,低位补0。左移n位相当于乘2的n次方  | 
|   >>  |   右移,符号位不变,用符号位补高位空缺。右移n位相当于除2的n次方  | 
|   >>>  |   无符号右移,低位溢出,高位补0  | 
演示:
/*** @author shbzhao* @version 1.0* @date 2023/8/28*/
public class BitOperatorTest {public static void main(String[] args) {/** 1.按位与(&):2 & 3* 正数的原码、反码、补码都相同* 2的三码:00000000 00000000 00000000 00000010* 3的三码:00000000 00000000 00000000 00000011* 2 & 3: 00000000 00000000 00000000 00000010* 结果为2** 2.按位或(&):* */System.out.println(2 & 3);}
} 
运算符优先级
|   优先级  |   运算符说明  |   Java运算符  | 
|   1  |   括号  |   ()、[]、{}  | 
|   2  |   正负号  |   +、-  | 
|   3  |   单元运算符  |   ++、--、~、!  | 
|   4  |   乘、除、取余  |   *、/、%  | 
|   5  |   加、减  |   +、-  | 
|   6  |   位移运算符  |   <<、>>、>>>  | 
|   7  |   关系运算符  |   >、>=、<、<=、==、!=、instanceof  | 
|   8  |   按位与  |   &  | 
|   9  |   按位异或  |   ^  | 
|   10  |   按位或  |   |  | 
|   11  |   短路与  |   &&  | 
|   12  |   短路或  |   ||  | 
|   13  |   三元运算符  |   条件表达式?表达式1:表达式2;  | 
|   14  |   赋值运算符  |   =、+=、-=、*=、/=、%=、>>=、<<=、>>>=、&=、|=、^=  | 
