⛵ ⛵ ⛵ ⛵ ⛵ 🚀 🚀 🚀 🚀 🚀
大家好🤝,我是👉老孙👈,未来学习路上多多关照🤝,一个不善于写作✍️却喜欢用博客记录人生的程序猿🙉,或许这是一件有意义又有趣的事📖,不为别的,只想看看自己到低能走多远🌏,是怎么走远的 ⏰🏘️⛵
🔥 🔥 🔥 🔥 🔥 ⭐ ⭐ ⭐ ⭐ ⭐
Java 基础语法
- 一、Java标识符
- 1、标识符(Identifier)
- 2、定义合法标识符的规则
- 3、Java中的名称命名规范
- 二、Java关键字【53个】
- 1、关键字(keyword)【51】
- 2. 保留字(reserved word)【2】
- 3、关键字分类(图片)
- 4、关键字和保留字简述(表格)
- 三、变量
- 1、变量的定义和使用
- 2、变量的分类
- 3、常见问题
- 四、数据类型
- 1、思维导图 + 图片 + 表格
- 2、整数类型:byte、short、int、long
- 3、浮点类型:float、double
- 4、字符类型:char
- 4.1、字符char
- 4.2、常见转义字符
- 5、布尔类型:boolean
- 6、ASCII 码
- 7、Unicode 编码
- 8、UTF-8
- 9、字符串类型String
- 五、Scanner类输入与输出
- 1、输入与输出
- 2、Scanner类的使用
- 六、格式化输出 printf
- 1、保留xx位小数
- 2、杨辉三角(数据靠左或右)
前期内容回顾:
- Java学习笔记【1】Java概述
- Java学习笔记【2】JDK环境配置
- Java学习笔记【3】第一个 Java 程序Hello World!
一、Java标识符
1、标识符(Identifier)
Java对各种 变量、方法 和 类 等要素命名时使用的字符序列称为 标识符
- 比如:变量名、类名、方法名、接口名、包名 . . .
- 技巧:凡是自己可以起名字的地方都叫标识符
2、定义合法标识符的规则
如果不遵守如下规则,编译不通过,需要大家严格遵守 !
- 由26个英文字母大小写、0~9、_ 或 $ 组成
- 数字不可以开头
- 不可以使用关键字和保留字,但能包含关键字和保留字(比如:staticpublic)
- Java中严格区分大小写,长度无限制
- 标识符不能包含空格
3、Java中的名称命名规范
如果不遵守如下规范,编译可以通过!建议大家遵守!
- 包名:多单词组成时所有的字母都小写:xxyyyzz
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz【大驼峰】
- 变量名、方法名:多单词组成时,所有单词的首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz【小驼峰】
- 常量名:所有字母都大写,多单词组成时,单词之间用下划线连接:XXX_YYY_ZZZ
【注意】
- 在起名字时,为了提高可读性,要尽量有意义,“见名知意”。
- Java采用Unicode字符集,因此标识符也可以使用汉字声明,但不建议使用。
package com.Java_conclusion.contact; //包名:Java_conclusion.contact
public class Grammar_Identifier { //类名:Grammar_Identifier
static final double PI = 3.1415; //类常量1
public static final double ONE_TWO_THREE = 1.23456789; //类常量2
public static void main(String [] args)
{
final int MY_YEAR = 18; //常量
int myNumber = 1001; //变量名:myNumber
System.out.println(myNumber);
//下面2种情况编译可以通过! 但不要这要写,可读性差!
int mynumber1 = 1002;
System.out.println(mynumber1);
int 学号 = 1003;
System.out.println(学号);
System.out.println(hello()); //Java你好!666
}
public static int hello(){ //方法名:hello
System.out.print("Java你好!");
return 666;
}
interface USB{ //创建一个接口,接口名:USB
void start();
void stop();
}
public interface ChineseName{} //接口名:ChineseName
}
二、Java关键字【53个】
1、关键字(keyword)【51】
- 关键字的定义和特点
- 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
- 特点:关键字中所有字母都为小写
2. 保留字(reserved word)【2】
-
现有的 Java版本尚未使用,但以后版本可能会作为关键字使用。
-
自己命名标识符是要避免使用这些关键字:goto、const
3、关键字分类(图片)
true、false、null 不算关键字,但可以当做关键字使用。
4、关键字和保留字简述(表格)
关键字 | 含义 | |
---|---|---|
1 | abstract | 抽象类或方法 |
2 | assert | 用来查找内部程序错误 |
3 | boolean | 布尔类型 |
4 | break | 跳出一个switch或循环 |
5 | byte | 8位整数类型 |
6 | case | switch的一个分支 |
7 | catch | 捕获异常的try块子句 |
8 | char | Unicode字符类型 |
9 | class | 定义一个类类型 |
10 | const | 未使用(保留字) |
11 | continue | 在循环末尾继续 |
12 | default | switch 的缺省子句 |
13 | do | do/while循环最前面的语句 |
14 | double | 双精度浮点数类型 |
15 | else | if语句的else子句 |
16 | enum | 枚举类型 |
17 | extends | 定义一个类的父类 |
18 | final | 一个常量,或不能覆盖的一个类或方法 |
19 | finally | try块中总会执行的部分 |
20 | false | 用于定义数据类型值的字面值 |
21 | float | 单精度浮点数类型 |
22 | for | 一种循环类型 |
23 | goto | 未使用(保留字) |
24 | if | 一个条件语句 |
25 | implements | 定义一个类实现的接口 |
26 | import | 导入一个包 |
27 | instanceof | 测试一个对象是否为一个类的实例 |
28 | int | 32位整数类型 |
29 | interface | 一种抽象类型,其中包含可以由类实现的方法 |
30 | long | 64位长整数类型 |
31 | native | 由宿主系统实现的一个方法 |
32 | new | 分配一个新对象或数组 |
33 | null | 一个空引用(需要说明,null 从技术上讲是一个直接量,而不是关键字) |
34 | package | 包含类的一个包 |
35 | private | 这个特性只能由该类的方法访问 |
36 | protected | 这个特性只能由该类、其子类以及同一个包中的其他类的方法访问 |
37 | public | 这个特性可以由所有类的方法访问 |
38 | return | 从一个方法返回 |
39 | short | 16位整数类型 |
40 | static | 这个特性是这个类特有的,而不属于这个类的对象 |
41 | strictfp | 对浮点数计算使用严格的规则 |
42 | super | 超类对象或构造函数 |
43 | switch | —个选择语句 |
44 | synchronized | 对线程而言是原子的方法或代码块 |
45 | this | 当前类的一个方法或构造函数的隐含参数 |
46 | throw | 抛出一个异常 |
47 | throws | 一个方法可能抛出的异常 |
48 | transient | 标志非永久的数据 |
49 | true | 用于定义数据类型值的字面值 |
50 | try | 捕获异常的代码块 |
51 | void | 指示一个方法不返回任何值 |
52 | volatile | 确保一个字段可以由多个线程访问 |
53 | while | 一种循环 |
三、变量
1、变量的定义和使用
变量的概念:
- 内存中的一个存储区域
- 该区域的数据可以在同一类型范围内不断变化
- 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值
变量的作用:用于在内存中保存数据
使用变量注意:
- Java中每个变量必须先声明,后使用
- 变量的作用域:其定义所在的一对{ }内
- 变量只有在其作用域内才有效。
- 同一个作用域内,不能定义重名的变量
//Java定义变量的格式:
数据类型 变量名 = 变量值;
public class Grammar_Variable {
public static void main(String [] args)
{
//变量的定义:变量的声明 和 初始化分开进行
int myNumber; //变量的声明
myNumber = 1001; //变量的赋值(初始化)
//变量的使用
System.out.println(myNumber);
//变量的定义:声明并初始化同时进行
int myAge = 12;
//变量的使用
System.out.println(myAge);
}
}
2、变量的分类
1️⃣ 按声明的位置的不同
- 成员变量:在方法体外,类体内声明的变量。
- 局部变量:在方法体内部声明的变量。
注意:二者在初始化值方面的异同:
- 同:都有生命周期
- 异:局部变量除形参外,需显式初始化。
2️⃣ 按数据类型分类:
- 基本数据类型:数值型、字符型、布尔型
- 引用数据类型:类、接口、数组
3、常见问题
- 交换2个变量的值的3种方法
//交换2个变量的值:有3种方法
int n = 10;
int m = 15;
//方法1:常常使用方法(推荐)
int temp = n;
n = m;
m = n;
//方法2:好处:不用定义临时变量
//弊端: 相加操作可能超出存储范围
// 有局限性:只适合于数值类型
n = n + m; //n=25 = 10 + 15;
m = n - m; //m=10 = 25 - 15;
n = n - m; //n=15 = 25 - 10;
//方法3:使用位运算符
//有局限性:只能适合于数值类型
n = n ^ m;
m = n ^ m;
n = n ^ m;
四、数据类型
1、思维导图 + 图片 + 表格
对于每一种数据都定义了明确的具体数据类型(强类型语言),在内存中分配了不同大小的内存空间。
1️⃣ 思维导图
2️⃣ 基本数值类型取值范围(图片):
- 一字节 = 8位,即1byte = 8bit
- bit: 计算机中的最小存储单位。byte:计算机中基本存储单元。
2、整数类型:byte、short、int、long
Java各整数类型有固定的表数范围和字段长度,不受具体OS的影响,以保证java程序的可移植性。
java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’
java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long
@Test
public void test1() {
//1、整型:byte(1字节 = 8bit)、short、int、long
//① byte范围:-128 ~ 127
//② 声明long整型变量,必须以 "l" 或 "L" 结尾
byte b1 = 12;
byte b2 = -128;
short s1 = 128;
int i1 = 1234;
long l1 = 66668888L;
System.out.println("b1=" + b1 + "\tb1=" + b2);
System.out.println("s1=" + s1 + "\ti1=" + i1 + "\tl1=" + l1);
}
3、浮点类型:float、double
与整数类型类似,Java 浮点类型也有固定的表数范围和字段长度,不受具体操作系统的影响。
float 取值范围:-3.4028235E38 ~ -1.4E-45、1.4E-45 ~ 3.4028235E38
有效数字7位(或8位):前7位有效数字是真实值,第8位是估算值,可能和原始一致,可能是四舍五入上来的。
double 取值范围:-1.7976931348623157E308 ~ -4.9E-432、4.9E-324 ~ 1.7976931348623157E308
有效数字15位(或16位):前15位有效数字是真实值,第16位是估算值,可能和原始一致,可能是四舍五入上来的 。
浮点型常量有两种表示形式:
- 十进制数形式:如:5.12 512.0f .512 (必须有小数点)
- 科学计数法形式:如:5.12e2 512E2 100E-2
指数形式:由两部分组成、十进制小数形式或十进制整型常量部分和指数部分。其中指数部分是在e或E(相当于数学中幂底数 10)后跟整数阶码(即可带符号的整数指数)。例如:2E15 表示数值 2 * 1015、3.14E+1表示数值 3.14 * 1015、2E-1表示数值 2 *10-1 。
@Test
public void test() {
//2、浮点型:float(7位有效数字)、double
//① 定义float类型变量时,变量要以 "f" 或 "F"结尾
//② float 表示的数据范围比long大
float f1 = 66.6F;
double d1 = 88.8;
System.out.println("f1=" + f1 + "\td1=" + d1);
}
4、字符类型:char
4.1、字符char
char 型数据用来表示通常意义上“字符”(2字节)
Java中的所有字符都使用Unicode编码,故一个字符可以存储一个字母,一个汉字,或其他书面语的一个字符。
char类型是可以进行运算的。因为它都对应有Unicode码。
字符型变量的三种表现形式:
- 字符常量是用单引号(‘ ’)括起来的单个字符。例如:char c1 = ‘a’; char c2 = ‘中’; char c3 = ‘9’;
- Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; // '\n’表示换行符
- 直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。如:\u000a 表示 \n。
4.2、常见转义字符
转义字符主要用来表示那些用一般字符不便于表示的控制代码,构成字符常量的控制字符必须用转义字符表示,这种“控制字符”在屏幕上是不能显示的,转义字符虽然包含两个或多个字符,但它只代表一个字符。转义字符的意思是将
\
后面的字符转换成另外的意义。
转义字符 | 含义(字符值) | 作用 |
---|---|---|
\' | 单撇号 | 输出单撇号 ' |
\" | 双撇号 | 输出双撇号" |
\? | 问号 | 输出问号字符? |
\\ | 反斜线 | 输出反斜线字符\ |
\b | 退格(backspace) | 将光标当前位置后退一个字符 |
\n | 换行 | 将光标当前位置移动到下一行的开头 |
\t | 水平制表符 | 将光标当前位置移动到下一个Tab位置1 |
\r | 回车 | 将光标当前位置移动到本行的开头0 |
@Test
public void test4() {
//3、字符型:char(1字符=2字节=16位)
//① 定义char型变量,通常使用一对 '' ,内部只能写一个字符
char c1 = 'a';
char c2 = '1';
char c3 = '中';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
//② 表示方式:1、声明一个字符 2、转义字符 3、直接使用 Unicode 值来表示字符常量
char c4 = '\n';
char c5 = '\t';
char c6 = '\u0043'; //大写字母C
System.out.println("Hello" + c5 + "World!" + c4);
System.out.println(c6);
}
5、布尔类型:boolean
boolean 类型用来判断逻辑条件,一般用于程序流程控制
- if条件控制语句;
- while循环控制语句;
- do-while循环控制语句;
- for循环控制语句
boolean类型数据只允许取值true和false,无null。
- 不可以使用0或非 0 的整数替代false和true
- Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达所操作的boolean值,在编译之后都使用java虚拟机中的int数据类型来代替:true用1表示,false用0表示。
@Test
public void test4() {
//4、布尔型:boolean
//① 只能取两个值:true 或 false
//② 常常在条件判断、循环结构中使用
//如:if(0):错误 if(1 == 1):对
boolean bb1 = true;
System.out.println("布尔型:"+ bb1);
boolean isMarried = true;
if(isMarried) {
System.out.println("很遗憾,你就不能参加单身party了!");
}else {
System.out.println("你可以多谈谈女朋友!");
}
}
6、ASCII 码
- 在计算机内部,所有数据都使用二进制表示。每一个二进制位(bit)有 0 和 1 两种状态,因此 8 个二进制位就可以组合出 256 种状态,这被称为一个字节(byte)。一个字节一共可以用来表示 256 种不同的状态,每一个状态对应一个符号,就是 256 个符号,从0000000 到 11111111。
- ASCII码:上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码。ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。
- 缺点:不能表示所有字符。相同的编码表示的字符不一样:比如,130在法语编码中代表了é,在希伯来语编码中却代表(ג) 了字母Gimel
7、Unicode 编码
- 乱码:世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。
- Unicode:一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,使用 Unicode 没有乱码的问题。
- Unicode 的缺点:Unicode 只规定了符号的二进制代码,却没有规定这个二进制代应该如何存储:无法区别 Unicode 和 ASCII:计算机无法区分三个字节表示一个符号还是分别表示三个符号。另外,我们知道,英文字母只用一个字节表示就够了,如果unicode统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储空间来说是极大的浪费。
8、UTF-8
- UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。
- UTF-8 是一种变长的编码方式。它可以使用 1-6 个字节表示一个符号,根据不同的符号而变化字节长度。
- UTF-8的编码规则:
- 对于单字节的UTF-8编码,该字节的最高位为0,其余7位用来对字符进行编码(等同于ASCII码)。
- 对于多字节的UTF-8编码,如果编码包含 n 个字节,那么第一个字节的前 n 位为1,第一个字节的第 n+1 位为0,该字节的剩余各位用来对字符进行编码。在第一个字节之后的所有的字节,都是最高两位为"10",其余6位用来对字符进行编码。
9、字符串类型String
应用类型有3类:类,数组,接口(这些引用类型的默认值都是null)
- 字符串类型:String
- String属于引用数据类型,翻译为:字符串
- 声明String类型变量时,使用双引号: ""
- 一个字符串可以串接另一个字符串,也可以串接其他数据类型
String name = "Star";
public class Grammar_String {
public static void main(String [] args)
{
String s1 = "Hello World!";
System.out.println(s1);
String s2 = "a";
String s3 = ""; //空
System.out.println(s2);
System.out.println(s3);
//char c = ''; //编译不能通过
//---------------------------------
int number = 1001;
String numberStr = "学号:";
String info = numberStr + number; // + 连接运算
boolean b1 = true;
String info1 =info + b1; //连接运算 info:信息(information)
System.out.println(info1);
//练习1
char c = 'a';
int num = 10;
String str = "Hello";
System.out.println(c + num + str);
System.out.println(c + str + num);
System.out.println(c + (num + str));
System.out.println((c + num) + str);
System.out.println(str + num + c);
//练习二
System.out.println( (int)'\t' ); //9
System.out.println( (int)'*' ); //42
System.out.println("* *");
System.out.println('*' + '\t' + '*'); //42+9+42
System.out.println('*' + "\t" + '*');
System.out.println('*' + '\t' + "*"); //42+9
System.out.println('*' + ('\t' + "*"));
}
}
五、Scanner类输入与输出
1、输入与输出
//如何从键盘获取不同类型的变量
import java.util.Scanner //导包
Scanner scan = new Scanner(System.in); //Scanner的实例化(打开扫描仪)
String name = scan.next();
int age = scan.nextInt();
//输出
System.out.println();//输出内容并换行
System.out.printf();//输出内容不换行
2、Scanner类的使用
具体实现步骤:
- 导包: import java.util.Scanner
- Scanner的实例化:Scanner scan = new Scanner(System.in);
- 调用 Scanner类 的相关方法:next() / nextXxx ,获取指定类型变量
注意:需要根据相应的方法,来输入指定类型的值,如果输入的数据类型与要的类型不匹配时, 会报异常: InputMisMatchException,导致程序终止。
//第一步:导包 import java.util.Scanner;
import java.util.Scanner;
public class Java1_VariableScanner {
public static void main(String [] args)
{
//第二步:Scanner的实例化
// scan 用户自已定义
Scanner scan = new Scanner(System.in);
//第三步:调用Scanner类的相关方法
//1、字符串【特殊】
System.out.println("请输入你的姓名:"); //输入123也对
String name = scan.next();
System.out.println(name);
//2、字符:【特殊】
//注意:对于char型的获取,Scanner没有提供相关的方法,只能获取一个字符串
System.out.println("请输入你的性别:(男/女)");
String gender = scan.next(); //gender:性别
char genderChar = gender.charAt(0); //获取索引为0位置上的字符
System.out.println(genderChar);
//3、整型【nextInt】
System.out.println("请输入你的芳龄:"); //输入浮点型18.8会报错
int age = scan.nextInt();
System.out.println(age);
//4、浮点型【netDobule】
System.out.println("请输入你的体重:"); //输入整型100不会报错
double weight = scan.nextDouble();
System.out.println(weight);
//5、布尔型【nextBoolean】
System.out.println("你是否相中我了呢?(true/false)");
boolean islove = scan.nextBoolean();
System.out.println(islove);
}
}
六、格式化输出 printf
我们一般会使用转义字符来控制输出的格式。对于转义字符可以调整输出内容的格式,如果使用格式化输出printf可以更好的控制输出的内容格式。
System.out.println("hello\tworld");
System.out.printf("hello\tworld\n");
▶️ 运 行 ▶️
1、保留xx位小数
格式化输出:保留xx位小数
@Test
public void test3() {
float a = 9.55f;
float b = 8.8f;
float c = 6f;
System.out.println("从小到大排序后输出结果:");
System.out.printf("只保留整数: %.0f %.0f %.0f\n",a,b,c); //结果遵循四舍五入
System.out.printf("保留一位小数: %.1f %.1f %.1f\n",a,b,c);
System.out.printf("保留不同位小数:%.0f %.1f %.2f\n",a,b,c);
}
▶️ 运 行 ▶️
2、杨辉三角(数据靠左或右)
格式化输出:杨辉三角(数据靠左或右)
System.out.printf("%-5d",a);// %-m.nd形式
//m数据总宽度,n小数位数,
//负号:输出数字或字符靠左
@Test
public void test2(){
int[][] yangHui = new int[10][];
for(int i = 0;i < yangHui.length;i++){
yangHui[i] = new int[i + 1];
yangHui[i][0] = yangHui[i][i] = 1;
for(int j = 1;j < yangHui[i].length - 1;j++){
yangHui[i][j] = yangHui[i-1][j-1] + yangHui[i-1][j];
}
}
for(int[] arr : yangHui){
for(int a : arr){
// System.out.print(a + "\t");
System.out.printf("%-5d",a);// %-m.nd形式
}
System.out.println();
}
▶️ 运 行 ▶️
- %-5d 数据靠左
- %5d 数据靠右
最后推荐文章:
- 电脑常用快捷键和操作你值得拥有!
- 相见恨晚的强大截图软件:Snipaste
😜 相 见 就 是 【 猿 分 】 🐒
.
👀 感谢您阅读完此文章 👀
.
❓ 希望能够对你有所帮助 🎯
.
❌ 如果文章中有错误的地方请指正 ✔️
.
💪 感谢支持,一起加油,共同进步 🏃