「这是我参与2022首次更文挑战的第四天,活动详情查看:2022首次更文挑战」
hello,world程序解释
//public表示公开的
//class表示定义一个类
//hello表示一个类名
public class hello//表示定义一个公开的类,名字叫hello
{
//这里代表类体
//类体中不允许直接编写Java语句【除声明变量之外】
public static void main(String[] args)//表示定义一个公开的静态的主方法
{
//这里代表方法体
//static表示静态的
//void表示空
//main表示方法名是main
//(String[] args)是一个main方法的形式参数列表
//大写的字母必须大写
System.out.println("hello,word"); //向控制台输出消息(打印)
}
}
public class和class区别
- 一个java文件中可以定义多个class
- 一个java文件中不一定有public的class
- 一个class会定义生成一个xxx.class字节码文件
- 一个java源文件当中定义公开的类话,public的class只能有一个,并且该类的名称必须和源文件的名称一致
- 每一个class当中都可以编写main方法,都可以设置程序执行入口,想执行B.class中的main方法---java B即可
- 每个class中必须有主方法
标识符的命名规则
- 这是一种规则,不按规则来编译器会报错
- 合法的标识符只能由“数字,字母,下划线_,美元符$”组成
- 不能以数字开头
- 严格区分大小写
- 理论上无长度限制,但不要太长
标识符命名规范
-
这只是一种规范,不属于语法 ,不遵守规范编译器不会报错
-
遵循驼峰命名方式例如:
SystemService
UserService
- 类名,接口名:首字母大写,后面每个单词首字母大写
- 变量名,方法名:首字母小写,后面每个单词首字母大写
- 常量名:全部大写
Java关键字
| Java关键字类别 | Java关键字 | 关键字含义 |
|---|---|---|
| 访问控制 | private | 一种访问控制方式:私用模式,访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量) |
| 访问控制 | protected | 一种访问控制方式:保护模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符 |
| 访问控制 | public | 一种访问控制方式:共用模式,可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。 |
| 类、方法和变量修饰符 | abstract | 表明类或者成员方法具有抽象属性,用于修改类或方法 |
| 类、方法和变量修饰符 | class | 声明一个类,用来声明新的Java类 |
| 类、方法和变量修饰符 | extends | 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口 |
| 类、方法和变量修饰符 | final | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量 |
| 类、方法和变量修饰符 | implements | 表明一个类实现了给定的接口 |
| 类、方法和变量修饰符 | interface | 接口 |
| 类、方法和变量修饰符 | native | 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的 |
| 类、方法和变量修饰符 | new | 用来创建新实例对象 |
| 类、方法和变量修饰符 | static | 表明具有静态属性 |
| 类、方法和变量修饰符 | strictfp | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 |
| 类、方法和变量修饰符 | synchronized | 表明一段代码需要同步执行 |
| 类、方法和变量修饰符 | transient | 声明不用序列化的成员域 |
| 类、方法和变量修饰符 | volatile | 表明两个或者多个变量必须同步地发生变化 |
| 程序控制 | break | 提前跳出一个块 |
| 程序控制 | continue | 回到一个块的开始处 |
| 程序控制 | return | 从成员方法中返回数据 |
| 程序控制 | do | 用在do-while循环结构中 |
| 程序控制 | while | 用在循环结构中 |
| 程序控制 | if | 条件语句的引导词 |
| 程序控制 | else | 用在条件语句中,表明当条件不成立时的分支 |
| 程序控制 | for | 一种循环结构的引导词 |
| 程序控制 | instanceof | 用来测试一个对象是否是指定类型的实例对象 |
| 程序控制 | switch | 分支语句结构的引导词 |
| 程序控制 | case | 用在switch语句之中,表示其中的一个分支 |
| 程序控制 | default | 默认,例如:用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现 |
| 错误处理 | try | 尝试一个可能抛出异常的程序块 |
| 错误处理 | catch | 用在异常处理中,用来捕捉异常 |
| 错误处理 | throw | 抛出一个异常 |
| 错误处理 | throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
| 包相关 | import | 表明要访问指定的类或包 |
| 包相关 | package | 包 |
| 基本类型 | boolean | 基本数据类型之一,声明布尔类型的关键字 |
| 基本类型 | byte | 基本数据类型之一,字节类型 |
| 基本类型 | char | 基本数据类型之一,字符类型 |
| 基本类型 | double | 基本数据类型之一,双精度浮点数类型 |
| 基本类型 | float | 基本数据类型之一,单精度浮点数类型 |
| 基本类型 | int | 基本数据类型之一,整数类型 |
| 基本类型 | long | 基本数据类型之一,长整数类型 |
| 基本类型 | short | 基本数据类型之一,短整数类型 |
| 基本类型 | null | 空,表示无值,不能将null赋给原始类型(byte、short、int、long、char、float、double、boolean)变量 |
| 基本类型 | true | 真,boolean变量的两个合法值中的一个 |
| 基本类型 | false | 假,boolean变量的两个合法值之一 |
| 变量引用 | super | 表明当前对象的父类型的引用或者父类型的构造方法 |
| 变量引用 | this | 指向当前实例对象的引用,用于引用当前实例 |
| 变量引用 | void | 声明当前成员方法没有返回值,void可以用作方法的返回类型,以指示该方法不返回值 |
| 保留字 | goto | 保留关键字,没有具体含义 |
| 保留字 | const | 保留关键字,没有具体含义,是一个类型修饰符,使用const声明的对象不能更新 |
八种数据类型默认值
| 数据类型 | 默认值 |
|---|---|
| byte,short,int,long | 0 |
| float,double | 0.0 |
| boolean | false |
| char | \u000 |
注:boolean只有true,false两个值
基本数据类型的转换规则
-
八种基本数据类型当中除布尔类型之外剩下的7种都可以互相转换
-
小容量向大容量转换,成为自动类型转换,容量从小到大排序:
byte < short/char < int < long <float < double
注:任何浮点型不管占用多少字节,都比证书容量大
char和short可表示的种类数量相同,但是char可以取更大的正整数
-
大容量转化成小容量,叫做强制类型转换,需要加强制类型转换符,程序才能编译通过,但是在运行阶段可能会损失精度,所以谨慎使用。
-
当整数字面值没有超出byte,short,char的取值范围可以直接赋值给这些类型的变量
-
byte,short,char混合运算时各自转换成int类型再做运算
-
多种数据类型混合运算,先转换成容量最大的那种类型在做运算
运算符
算数运算符
| 操作符 | 描述 | 例子 |
|---|---|---|
| + | 加法 - 相加运算符两侧的值 | A + B 等于 30 |
| - | 减法 - 左操作数减去右操作数 | A – B 等于 -10 |
| * | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
| / | 除法 - 左操作数除以右操作数 | B / A等于2 |
| % | 取余 - 左操作数除以右操作数的余数 | B%A等于0 |
| ++ | 自增: 操作数的值增加1 | B++ 或 ++B 等于 21 |
| -- | 自减: 操作数的值减少1 | B-- 或 --B 等于 19 |
关系运算符
| 运算符 | 描述 | 例子 |
|---|---|---|
| == | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | (A == B)为假。 |
| != | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | (A != B) 为真。 |
| 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | (A> B)为假。 | |
| < | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | (A <B)为真。 |
| >= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | (A> = B)为假。 |
| <= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | (A <= B)为真。 |
位运算符
| 操作符 | 描述 | 例子 |
|---|---|---|
| & | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| | | 如果相对应位都是 0,则结果为 0,否则为 1 | (A | B)得到61,即 0011 1101 |
| 如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 | |
| 〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
| << | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
| >> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 | A >> 2得到15即 1111 |
| >>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |
逻辑运算符
| 操作符 | 描述 | 例子 |
|---|---|---|
| & | 称为按位与,两个操作数都为真则为真 | (1<2)&(3>2)为真 |
| | | 称为逻辑或,两个数只要有一个真则为真 | (1<3)|(1>2)为真 |
| ! | 称为逻辑非,用来反转操作数的逻辑状态 | !ture为假 |
| && | 称为短路与,两个操作数都为真则为真,若前面的条件已确定则后面的条件不执行,按位与与之相反 | |
| || | 称为短路或,两个数只要有一个真则为真,若前面的条件已确定则后面的条件不执行,逻辑或与之相反 |
赋值运算符
| 操作符 | 描述 | 例子 |
|---|---|---|
| = | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
| + = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
| - = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
| * = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
| / = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A,C 与 A 同类型时等价于 C = C / A |
| (%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
| << = | 左移位赋值运算符 | C << = 2等价于C = C << 2 |
| >> = | 右移位赋值运算符 | C >> = 2等价于C = C >> 2 |
| &= | 按位与赋值运算符 | C&= 2等价于C = C&2 |
| ^ = | 按位异或赋值操作符 | C ^ = 2等价于C = C ^ 2 |
| | = | 按位或赋值操作符 | C | = 2等价于C = C | 2 |
字符串连接符
| 操作符 | 描述 | |
|---|---|---|
| + | 字符串连接符,若两边有一边是字符串则连接两边 |
接受用户键盘输入
第一步:创建键盘扫描机器对象
java.util.Scanner s = new java.util.Scanner(System.in);
//在结束后需要加上下面这一句
s.close();
第二步:调用Scanner对象的next()方法开始接受用户键盘输入
//输入字符
String str = s.next();
//输入数字
int num = s.nextInt();
if语句
if语句语法
if(布尔表达式){
java语句;
java语句;
...
}
if else语句语法
if(布尔表达式){
java语句;
...
}else {
java语句;
...
}
判断字符串
判断字符串用equals函数语法如下
str.equals(str2)
注:一个汉字等于两个字符
switch语句
switch语句语法
switch(int/string的字面值或变量){
case int/string的字面值或变量 :
java语句;
...
case int/string的字面值或变量 :
java语句;
...
default :
java语句;
...
}
注:1. 匹配成功的分支执行,分支当中没有“break”语句的话,直接进入下一个分支执行(不进行匹配)这种现象被称为case穿透现象【提供break;语句可以避免穿透】
- switch括号中只能是int/string的字面值或变量,如果是byte,short,编译器会自动转化成int,如果是long或者浮点型数据需要强制转换成int,但是可能会发生精度丢失。
case合并
int i;
switch(i){
case 1 : case 2: case 5:case 6 :
System.out.println("真不戳!");
}
当 i = 1,2,5,6时都可以执行,这种现象叫做case合并。
for语句
for语句语法
for(初始化表达式;布尔表达式;更新表达式)
{
//需要重复执行的代码片段
}
注: 1. 初始化表达式最先执行,并且在整个for循环中只执行一次。
2.执行顺序:判断布尔表达式-> 布尔表达式ture -> 执行循环体 -> 执行更新表达式....依次循环
3.for循环嵌套for时里外变量不可相同
九九乘法表
public class jiujiu {
public static void main(String[] args){
for(int i=1 ;i<=9 ; i++){
for(int j=1 ; j<=i ;j++){
System.out.print(i + "*" + j + "=" + i*j + " ");
}
System.out.println(" ");
}
}
}