当前位置:首页 » 《随便一记》 » 正文

Java学习笔记【4】基础语法⭕

20 人参与  2021年11月21日 09:23  分类 : 《随便一记》  评论

点击全文阅读


在这里插入图片描述

   ⛵ ⛵ ⛵ ⛵ ⛵ 🚀 🚀 🚀 🚀 🚀
  大家好🤝,我是👉老孙👈,未来学习路上多多关照🤝,一个不善于写作✍️却喜欢用博客记录人生的程序猿🙉,或许这是一件有意义又有趣的事📖,不为别的,只想看看自己到低能走多远🌏,是怎么走远的 ⏰🏘️⛵
  🔥 🔥 🔥 🔥 🔥 ⭐ ⭐ ⭐ ⭐ ⭐


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中的名称命名规范

如果不遵守如下规范,编译可以通过!建议大家遵守!

  1. 包名:多单词组成时所有的字母都小写:xxyyyzz
  2. 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz【大驼峰】
  3. 变量名、方法名:多单词组成时,所有单词的首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz【小驼峰】
  4. 常量名:所有字母都大写,多单词组成时,单词之间用下划线连接:XXX_YYY_ZZZ

【注意】

  1. 在起名字时,为了提高可读性,要尽量有意义,“见名知意”。
  2. 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、关键字和保留字简述(表格)

关键字含义
1abstract抽象类或方法
2assert用来查找内部程序错误
3boolean布尔类型
4break跳出一个switch或循环
5byte8位整数类型
6caseswitch的一个分支
7catch捕获异常的try块子句
8charUnicode字符类型
9class定义一个类类型
10const未使用(保留字)
11continue在循环末尾继续
12defaultswitch 的缺省子句
13dodo/while循环最前面的语句
14double双精度浮点数类型
15elseif语句的else子句
16enum枚举类型
17extends定义一个类的父类
18final一个常量,或不能覆盖的一个类或方法
19finallytry块中总会执行的部分
20false用于定义数据类型值的字面值
21float单精度浮点数类型
22for一种循环类型
23goto未使用(保留字)
24if一个条件语句
25implements定义一个类实现的接口
26import导入一个包
27instanceof测试一个对象是否为一个类的实例
28int32位整数类型
29interface一种抽象类型,其中包含可以由类实现的方法
30long64位长整数类型
31native由宿主系统实现的一个方法
32new分配一个新对象或数组
33null一个空引用(需要说明,null 从技术上讲是一个直接量,而不是关键字)
34package包含类的一个包
35private这个特性只能由该类的方法访问
36protected这个特性只能由该类、其子类以及同一个包中的其他类的方法访问
37public这个特性可以由所有类的方法访问
38return从一个方法返回
39short16位整数类型
40static这个特性是这个类特有的,而不属于这个类的对象
41strictfp对浮点数计算使用严格的规则
42super超类对象或构造函数
43switch—个选择语句
44synchronized对线程而言是原子的方法或代码块
45this当前类的一个方法或构造函数的隐含参数
46throw抛出一个异常
47throws一个方法可能抛出的异常
48transient标志非永久的数据
49true用于定义数据类型值的字面值
50try捕获异常的代码块
51void指示一个方法不返回任何值
52volatile确保一个字段可以由多个线程访问
53while一种循环

请添加图片描述

三、变量

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

指数形式:由两部分组成、十进制小数形式或十进制整型常量部分和指数部分。其中指数部分是在eE(相当于数学中幂底数 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类的使用

具体实现步骤:

  1. 导包: import java.util.Scanner
  2. Scanner的实例化:Scanner scan = new Scanner(System.in);
  3. 调用 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


😜 相 见 就 是 【 猿 分 】 🐒
.
👀 感谢您阅读完此文章 👀
.
❓ 希望能够对你有所帮助 🎯
.
❌ 如果文章中有错误的地方请指正 ✔️
.
💪 感谢支持,一起加油,共同进步 🏃

请添加图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/31111.html

字符  变量  类型  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1