?? ? ? ? ? ? 🚀 🚀 🚀 🚀 🚀 ??大家好🤝,我是👉老孙👈,未来学习路上多多关照🤝,一个不善于写作??却喜欢用博客记录人生的程序猿🙉,或许这是一件有意义又有趣的事📖,不为别的,只想看看自己到低能走多远🌏,是怎么走远的 ?🏘?? ??🔥 🔥 🔥 🔥 🔥 ? ? ? ? ?
前期内容回顾:
一、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;
public class Grammar_Identifier {
static final double PI = 3.1415;
public static final double ONE_TWO_THREE = 1.23456789;
public static void main(String [] args)
{
final int MY_YEAR = 18;
int myNumber = 1001;
System.out.println(myNumber);
int mynumber1 = 1002;
System.out.println(mynumber1);
int 学号 = 1003;
System.out.println(学号);
System.out.println(hello());
}
public static int hello(){
System.out.print("Java你好!");
return 666;
}
interface USB{
void start();
void stop();
}
public interface ChineseName{}
}
二、Java关键字【53个】
1、关键字(keyword)【51】
- 关键字的定义和特点
- 定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
- 特点:关键字中所有字母都为小写
2. 保留字(reserved word)【2】
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中每个变量必须先声明,后使用
- 变量的作用域:其定义所在的一对{ }内
- 变量只有在其作用域内才有效。
- 同一个作用域内,不能定义重名的变量
数据类型 变量名 = 变量值;
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、常见问题
int n = 10;
int m = 15;
int temp = n;
n = m;
m = n;
n = n + m;
m = n - m;
n = n - m;
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() {
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() {
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() {
char c1 = 'a';
char c2 = '1';
char c3 = '中';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
char c4 = '\n';
char c5 = '\t';
char c6 = '\u0043';
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() {
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);
int number = 1001;
String numberStr = "学号:";
String info = numberStr + number;
boolean b1 = true;
String info1 =info + b1;
System.out.println(info1);
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' );
System.out.println( (int)'*' );
System.out.println("* *");
System.out.println('*' + '\t' + '*');
System.out.println('*' + "\t" + '*');
System.out.println('*' + '\t' + "*");
System.out.println('*' + ('\t' + "*"));
}
}
五、Scanner类输入与输出
1、输入与输出
import java.util.Scanner
Scanner scan = new Scanner(System.in);
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;
public class Java1_VariableScanner {
public static void main(String [] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = scan.next();
System.out.println(name);
System.out.println("请输入你的性别:(男/女)");
String gender = scan.next();
char genderChar = gender.charAt(0);
System.out.println(genderChar);
System.out.println("请输入你的芳龄:");
int age = scan.nextInt();
System.out.println(age);
System.out.println("请输入你的体重:");
double weight = scan.nextDouble();
System.out.println(weight);
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);
@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.printf("%-5d",a);
}
System.out.println();
}
?? 运 行 ??
最后推荐文章:
😜 相 见 就 是 【 猿 分 】 🐒 . 👀 感谢您阅读完此文章 👀 . ? 希望能够对你有所帮助 🎯 . ? 如果文章中有错误的地方请指正 ?? . 💪 感谢支持,一起加油,共同进步 🏃
|