第一篇JAVA的学习笔记

本文介绍了Java编程的基础知识,包括Java的语法结构,如类和结构执行语句;注释的使用,包括单行、多行和文档注释;标识符的规则和关键字的限制;常量和变量的声明及数据类型转换;变量的作用域和类型转换;以及运算符的种类和优先级。此外,还涉及了流程控制,如条件语句、循环语句和循环控制。
摘要由CSDN通过智能技术生成

第一篇JAVA的学习笔记

1.Java的基本语法

1.Java中的程序代码必须放在一个类中,类需要class关键字来定义。

2.Java中的程序代码可分为结构语句和功能执行语句,结构定义语句用于声明一个类或方法,功能执行语句用于实现具体功能。每条功能执行语句最后都要使用英文分号 ; 来结尾

3.出于Java程序语言的可读性,我们应让自己编写的程序代码整齐美观,层次清晰。

4.Java语言严格区分大小写。

5.字符串不能分开写,中间得加加(+)号才行。

2.JAVA的注释

注释是用来解释代码、提高代码可读性和维护性的一种工具。Java 中有以下三种注释方式:

  1. 单行注释:以 “//” 开头的注释,用于注释单行代码或语句。

    // 这是一行单行注释
    int x = 1; // 这是一行注释掉的代码
    
  2. 多行注释:以 “/" 开头,以 "/” 结尾的注释,用于注释多行代码或语句。

    /*
    这是多行注释
    可以注释多行代码
    int x = 1;
    int y = 2;
    */
    
  3. 文档注释:以 “/**” 开头,以 “*/” 结尾的注释,用于生成 API 文档。文档注释可以包含 HTML 标记,用于生成更丰富的文档。

    /**
     * 这是文档注释
     * 用于生成 API 文档
     * 可以包含 HTML 标记
     *
     * @param name 姓名
     * @param age 年龄
     * @return 返回拼接的字符串
     */
    public String getInfo(String name, int age) {
        return "姓名:" + name + ", 年龄:" + age;
    }
    

注释是编写高质量代码的重要工具,建议在编写代码时添加必要的注释,以提高代码的可读性和可维护性。

3.Java的标识符

标识符是用来表示类、变量、方法和常量等命名的符号。Java 的标识符需要遵循以下规则:

  1. 标识符只能由字母、数字、下划线和美元符号组成,不能使用其他特殊字符。
  2. 标识符不能以数字开头,只能以字母、下划线或美元符号开头。
  3. 标识符不能是 Java 的关键字和保留字,如 if、else、for 等。
  4. 标识符的长度没有限制,但建议不要超过 15 个字符,以便提高代码的可读性。
  5. Java 中建议使用驼峰命名法来命名标识符,即首字母小写,后面的每个单词首字母大写,例如:firstName、lastName、getUserName()

在编写 Java 程序时,良好的标识符命名可以使代码更易读、易维护,同时也是编写高质量代码的基础之一。

4.Java的关键字

Java 中关键字是一些具有特殊含义的保留字,它们在 Java 语言中有着特殊的用途,不能作为标识符或变量名等其他用途。下面是 Java 中的关键字列表:

abstractassertbooleanbreakbyte
casecatchcharclassconst*
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgoto*ifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnshortstaticstrictfpsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

其中,有些关键字在 Java 中并不是真正的关键字,而是具有特殊含义的保留字,例如 const 和 goto 等。这些保留字虽然不能用作标识符或变量名等其他用途,但在 Java 中并没有实际用途,也不建议使用。

需要注意,关键字在 Java 中是有一定限制的,例如,不能用作变量名、方法名、类名等标识符,否则会导致编译错误。在 Java 中,标识符的命名也需要遵守一定的规范,例如,标识符不能以数字开头,不能包含特殊字符等。

5.Java的常量

Java 中的常量是指在程序执行过程中其值不会发生变化的数据,可以通过关键字 finalstatic final 来声明。

  1. 在Java中,常量包括,整数常量,浮点数常量,布尔常量,字符常量。
  2. 整形变量有四种表示形式分别为:二进制,八进制,十进制,十六进制。浮点型变量就是数学中的小数,可分为float单精度浮点数和double双精度浮点数两种类型。字符变量用于表示一个字符,一个字符常量要用英文半角格式单引号(’ ')引起来,它可以是英文,数字,标点符号以及由转义序列来表示的特殊字符。
  3. 字符串常量用于表示一串连续起来的字符,一个字符串要用一对英文半角格式的双引号(" ")引起来。
  4. 布尔常量即两个值true和false,用于判断真与假也可以用于判断成功和失败。
  5. null常量只有一个值null,表示对象的引用为空。

6.Java中的变量

1.变量的定义

1.变量的使用是程序设计中一个重要的环节,声明变量就是告诉编译器这个变量的数据类型。

2.在程序运行过程中,空间内的值是变化的,这个内存空间就称为变量。

3.在声明变量时可以是没有赋值,也可以是直接赋初值。

4.整数类型变量:用于存储整数数值,既没有小数部分的值。整数类型分为4种不同的类型:字节型(byte)、短整型(short)、整形(int)、长整型(long)。占用空间指的是不同类型的变量分别占用的内存大小。取值范围是变量储存的值不能超出的范围。详细如下表。

类型名占用空间取值范围
byte8位(1个字节)-128~127
short16位(2个字节)-32768~32767
int32位(4个字节)-2147483648~2147483647
long64位(8个字节)-922372036854775808~922372036854775807

5.浮点数类型的变量:用于存储小数数值。浮点数类型分为两种:单精度浮点数(float)、双精度浮点数(double),double型所表示的浮点数比floa型更精确。详细如下表。

类型名占用空间取值范围
float32位(4个字节)1.4E-45~3.4028235E38
double64位(8个字节)4.9E-324~1.7976931348623157E308

​ 在取值范围中,E表示以10为底的指数,E后面的“+”和“-”号代表正指数和负指数

6.字符类型变量:用于存储单一字符,在Java中用char表示。char的字符变量占用2个字节。赋值时,要使用英文半角格式的单引号 ’ ’ 把字符括起来,如’a’。

7.布尔类型变量:用来存储布尔值,在Java中用Boolean表示,布尔变量只有两个值,即ture和false。具体如下示例:

boolean flag = flase; //声明一个boolean类型的变量,初始值为false

flag = ture; //改变flag变量的值为ture

2.变量的数据转换

变量类型之间的转换可以分为自动类型转换和强制类型转换两种。

1.自动类型转换:如果两种数据类型兼容,Java 会自动将一种数据类型转换成另一种数据类型。兼容的数据类型包括:byte、short、char、int、long、float、double。自动类型转换遵循以下规则:

  • 数据类型范围小的可以自动转换成数据类型范围大的。

  • 整型可以自动转换成浮点型。

  • char 类型可以自动转换成 int 类型。

    2.强制类型转换:如果需要将一个数据类型强制转换成另一个数据类型,可以使用强制类型转换运算符 (type) 进行转换。强制类型转换可能会导致精度丢失或溢出,需要注意使用。强制类型转换遵循以下规则:

  • 强制类型转换需要在需要转换的数据类型前加上括号,并在括号中指定要转换的数据类型。

  • 数据类型范围大的需要强制转换成数据类型范围小的。

需要注意,在进行类型转换时,可能会导致精度丢失或溢出,需要仔细考虑转换的必要性和安全性。

3.变量的作用域

  1. 变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用区域。

  2. 在程序中,变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用区域

    例图代码(注意注释)

在这里插入图片描述

7.Java运算符

运算符是一些特殊的符号,主要用于数学函数、一些类型的赋值语句和逻辑比较方便。java中有着丰富的运算符,如赋值运算符、算术运算符、比较运算符等等。

1.1 赋值运算符

Java 的赋值运算符用于将一个值赋给一个变量,其中包括基本数据类型和引用类型。Java 中的赋值运算符包括以下几种:

  1. =:简单的赋值运算符,将右侧的值赋给左侧的变量。

  2. +=:加等于运算符,相当于 a = a + b。

  3. -=:减等于运算符,相当于 a = a - b。

  4. *=:乘等于运算符,相当于 a = a * b。

  5. /=:除等于运算符,相当于 a = a / b。

  6. %=:取模等于运算符,相当于 a = a % b。

1.2 算数运算符

Java 的算术运算符用于进行数学运算,包括加、减、乘、除和取模(求余数)运算,下面是 Java 中的算术运算符:

  1. +:加法运算符,用于将两个值相加。

  2. -:减法运算符,用于将两个值相减。

  3. *:乘法运算符,用于将两个值相乘。

  4. /:除法运算符,用于将两个值相除。

  5. %:取模(求余数)运算符,用于计算两个值相除后的余数。

1.3 自增与自减运算符

Java 中自增(++)和自减(–)运算符是一元运算符,用于将一个数增加 1 或减少 1。它们可以分为前缀和后缀两种形式:

  1. 前缀自增/自减:++i 或 --i,先将变量加/减 1,然后返回变量的值。

  2. 后缀自增/自减:i++ 或 i–,先返回变量的值,然后再将变量加/减 1。

1.4 比较运算符

Java 中的比较运算符用于比较两个值的大小关系,并返回一个布尔值(true 或 false)。下面是 Java 中的比较运算符:

  1. ==:等于运算符,用于比较两个值是否相等。

  2. !=:不等于运算符,用于比较两个值是否不相等。

  3. >:大于运算符,用于比较左侧的值是否大于右侧的值。

  4. <:小于运算符,用于比较左侧的值是否小于右侧的值。

  5. >=:大于等于运算符,用于比较左侧的值是否大于等于右侧的值。

  6. <=:小于等于运算符,用于比较左侧的值是否小于等于右侧的值。

1.5 逻辑运算符

Java 中逻辑运算符是用于将多个条件表达式组合成一个更复杂的条件表达式,并返回一个布尔值(true 或 false)。下面是 Java 中的逻辑运算符:

  1. &&:与运算符,用于将两个条件表达式连接起来,当且仅当两个表达式都为 true 时返回 true。

  2. ||:或运算符,用于将两个条件表达式连接起来,当任意一个表达式为 true 时返回 true。

  3. !:非运算符,用于取反一个条件表达式的结果,如果原来的表达式结果为 true,则取反后的结果为 false;反之亦然。

1.6 位运算符

Java 中位运算符是用于对二进制数据进行位运算。下面是 Java 中的位运算符:

  1. &:按位与运算符,对两个数的二进制进行按位与操作,得到的结果是一个新的二进制数。当两个对应的二进制位都为 1 时,结果为 1;否则为 0。

  2. |:按位或运算符,对两个数的二进制进行按位或操作,得到的结果是一个新的二进制数。当两个对应的二进制位都为 0 时,结果为 0;否则为 1。

  3. ^:按位异或运算符,对两个数的二进制进行按位异或操作,得到的结果是一个新的二进制数。当两个对应的二进制位相同时,结果为 0;否则为 1。

  4. ~:按位取反运算符,对一个数的二进制进行按位取反操作,得到的结果是一个新的二进制数。对于一个 n 位二进制数,其取反结果为 n 个 1 减去这个数的二进制表示。

  5. <<:左移运算符,将一个数的二进制表示向左移动指定的位数,得到的结果是一个新的二进制数。在左移过程中,高位溢出舍弃,低位补 0。

  6. >>:右移运算符,将一个数的二进制表示向右移动指定的位数,得到的结果是一个新的二进制数。在右移过程中,低位溢出舍弃,高位根据符号位补齐。如果这个数是正数,那么高位补 0;如果这个数是负数,那么高位补 1。

  7. >>>:无符号右移运算符,将一个数的二进制表示向右移动指定的位数,得到的结果是一个新的二进制数。在右移过程中,低位溢出舍弃,高位补 0。

需要注意,位运算符只能用于整数类型的数据。对于浮点类型和布尔类型的数据,不能使用位运算符。此外,在进行位运算操作时,需要考虑数据的二进制补码形式和符号位等因素。

1.7 运算符优先级

Java 中的运算符优先级如下(从高到低):

  1. 一元运算符: ++, --, +, -, !, ~

  2. 乘性运算符: *, /, %

  3. 加性运算符: +, -

  4. 移位运算符: <<, >>, >>>

  5. 比较运算符: <, <=, >, >=

  6. 相等运算符: ==, !=

  7. 按位与运算符: &

  8. 按位异或运算符: ^

  9. 按位或运算符: |

  10. 逻辑与运算符: &&

  11. 逻辑或运算符: ||

  12. 条件运算符: ? :

  13. 赋值运算符: =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=

注意:

  • 在同一行的运算符具有相同的优先级。

  • 如果表达式中有多个运算符,优先级高的运算符先执行。

  • 如果表达式中有多个优先级相同的运算符,执行顺序从左到右。

习题-商城库存

8.Java流程控制

1.复合语句

复合语句是由多个语句组成的代码块,通常用于控制结构(例如if语句,while循环等)或方法的主体部分。复合语句由一对花括号{}包围,其中包含一系列语句,例如:

if (x > 0) {
    System.out.println("x 是正数");
    int y = x * 2;
    System.out.println("y = " + y);
}

在上面的代码中,if语句的主体部分是一个复合语句,包含两个语句:打印一条消息和计算y的值,并打印出来。

复合语句中的变量作用域只限于该语句块内部。在上面的例子中,变量y只在复合语句中存在,并且在该复合语句外部不可见。

复合语句还可以嵌套,即一个复合语句可以包含另一个复合语句,例如:

if (x > 0) {
    System.out.println("x 是正数");
    if (x < 10) {
        System.out.println("x 小于 10");
    }
}

在上面的代码中,外层if语句的主体部分包含一个内层的if语句复合语句,该内层复合语句包含一个打印语句。

2.条件语句

条件语句可根据不同条件执行不同的语句,条件语句包括if条件语句和switch多分支语句。

2.1 if条件语句

Java中,可以使用if语句来根据条件执行代码块。if语句的语法如下:

if (条件表达式) {

// 当条件为真时执行的代码

}

如果条件为真,则执行if语句后面的代码块。如果条件为假,则跳过if语句后面的代码块,继续执行程序的下一条语句。可以在if语句后面添加else语句来指定当条件为假时要执行的代码块。例如:

if (条件表达式) {

   // 当条件为真时执行的代码
   
} else {

   // 当条件为假时执行的代码
   
}

除了if和else语句之外,还可以使用else if语句来测试多个条件。例如:

if (条件表达式1) {

   // 当条件1为真时执行的代码
   
} else if (条件表达式2) {

   // 当条件2为真时执行的代码
   
} else {

   // 当所有条件都为假时执行的代码
   
}

注意,如果在if语句中只有一条语句需要执行,可以省略花括号。但是,建议使用花括号来确保代码的可读性和可维护性。

2.2 switch 多分支语句

switch 语句是一种用于多分支选择的控制结构,它可以根据不同的条件执行不同的代码块。switch 语句的基本语法如下:

switch (expression) {

    case value1:

        // code block for case value1

        break;

    case value2:

        // code block for case value2

        break;

    ...

    default:

        // code block for default case

}

其中,expression 是需要比较的值,可以是一个整数、字符、字符串或枚举类型。case 子句中的 value 是要比较的值,当 expression 的值等于 value 时,对应的代码块将被执行。如果没有匹配的值,则执行 default 子句中的代码块。

需要注意的是,每个 case 子句都必须以一个 break 语句结束,否则会执行下一个 case 子句的代码块,直到遇到 break 语句为止。如果不需要执行任何代码块,可以使用空的 case 子句或者在最后一个 case 子句后省略 break 语句。

3.循环语句

Java中有三种基本的循环语句:for循环、while循环和do-while循环。这些循环结构允许程序重复执行一段代码,直到满足指定的条件为止。

1.for循环:

for循环用于循环执行已知次数的代码块,其语法格式如下:

scssCopy codefor (初始化; 条件判断; 增量) {

    // 待执行的代码块

}

在上面的代码中,初始化用于初始化循环计数器,条件判断用于检查循环计数器是否达到指定的条件,增量用于递增或递减循环计数器的值。只要条件为真,for循环将重复执行其中的代码块,直到条件为假。

2.while循环:

while循环用于循环执行未知次数的代码块,其语法格式如下:

javascriptCopy codewhile (条件判断) {

    // 待执行的代码块

}

在上面的代码中,只要条件为真,while循环将重复执行其中的代码块。如果条件一开始就为假,则循环中的代码将不会执行。

3.do-while循环:

do-while循环也用于循环执行未知次数的代码块,与while循环不同的是,do-while循环保证至少执行一次循环中的代码块,其语法格式如下:

javascriptCopy codedo {

    // 待执行的代码块

} while (条件判断);

在上面的代码中,循环中的代码块会在条件判断之前至少执行一次。只要条件为真,do-while循环将继续重复执行其中的代码块,直到条件为假。

这些循环语句可以根据实际情况灵活使用,帮助我们处理各种不同的问题。

4 循环控制

1. break语句

Java中break语句用于在循环或switch语句中提前结束循环或switch语句的执行。在循环语句中,break语句可以用来中断循环,从而提前结束循环体的执行。在switch语句中,break语句可以用来结束switch语句的执行,从而跳出switch语句。

在循环语句中,break语句通常用于以下几种情况:

  1. 当满足某个条件时,提前结束循环体的执行;

  2. 当循环体中出现异常情况时,提前结束循环体的执行;

  3. 当循环体中的某个条件不满足时,提前结束循环体的执行。

需要注意,在循环语句中,break语句只能用于终止离它最近的循环体的执行,而不能用于终止其他循环体的执行。

2. continue语句

Java中的continue语句用于在循环语句中跳过本次循环的剩余部分,直接进入下一次循环。当循环语句的执行进入到continue语句时,continue语句之后的语句都不会被执行,而是直接进入下一次循环。

continue语句通常在循环体内部的某个条件满足时被触发,用于提前结束当前循环的执行,然后进入下一次循环的执行。

需要注意,在循环语句中,continue语句只能用于跳过离它最近的循环体的本次执行,而不能用于跳过其他循环体的本次执行。

习题-猜数字游戏

在这里插入图片描述

9.Java中的方法

​ Java方法是语句的集合,它们在一起执行一个功能。

1.什么是方法

​ 1.方法是解决一类问题的步骤的有序组合

​ 2.方法包含于类或对象中

​ 3.方法在程序中被创建,在其他地方被引用

2.方法的定义

​ 1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson

​ 2.在Java中,声明一个方法的具体语法格式如下所示

      修饰符 返回值类型 方法名(参数类型 参数名){

             ...

            方法体

            ...

            return 返回值;

      }

​ 修饰符:是对访问权限的限定,例如,public、static都是修饰符

​ 返回值类型:用于限定方法返回值的数据类型

​ 参数类型:用于限定方法时转入参数的数据类型

​ 参数名:是一个变量,用于接收调用方法时转入的数据

​ return关键字:用于结束方法以及返回方法指定类型的值

​ 返回值:被return语句返回的值,该值会返回调用者

3.方法的重载

1.Java允许在一个程序中定义多个名称相同的方法,但是参数的类型或个数必须不同,这就是方法的重载。

2.重载只关心方法名和参数。

10.Java中的数组

1.数组概述

在Java中,数组是一种数据结构,可以存储固定数量的相同类型的元素。数组是一种简单的数据结构,可以用来表示列表、矩阵和其他形式的数据结构。

Java中的数组有以下特点:

  1. 数组是一个容器,它可以存储相同类型的元素。例如,一个int数组可以存储多个整数。

  2. 数组的大小是固定的,一旦创建就无法更改。在Java中,可以使用new运算符来创建数组,并指定数组的大小。

  3. 数组中的元素可以通过索引访问,索引从0开始。例如,arr[0]表示数组中的第一个元素,arr[1]表示数组中的第二个元素,以此类推。

  4. 数组中的元素可以是任何基本数据类型或引用类型。例如,可以创建一个int数组、一个String数组或一个自定义对象的数组。

数组是一个非常常见的数据结构。它们通常用于存储和处理大量的数据,例如图像、音频和视频等多媒体数据。数组还可以用于排序、搜索、过滤和其他算法。

Java提供了许多内置的数组操作方法和语法结构,使得创建和操作数组非常方便。例如,可以使用for循环来遍历数组,使用Arrays类来对数组进行排序和搜索,使用多维数组来处理更复杂的数据结构等等。

2.数组的定义

​ 数组是指一组数据的集合,数组中的每个元素被称为元素,在数组中可以存放任意类型的元素,但同一个数组中存放的元素类型必须一致。
​ 在Java中,可以使用下列格式定义一个数组,具体示例如下:

int[] x = new int[100]:

​ 上述语句就相当于在内存中定义了100个int型的变量,第一个变量的名称为x[0],第二个变量的名称为x[1],以此类推,第100个变量的名称为x[99],这些变量的初始值都是0。

​ 在Java中,为了方便我们获得数组的长度,提供了一个length属性在程序中可以通过“数组名.length”的方式来获得数组的长度,即元素的个数。

3.遍历数组

遍历数组是指按照一定顺序依次访问数组中的每一个元素。遍历数组通常使用for循环语句来实现。遍历二维数组需使用双层for循环,通过length属性可获得数组长度。

11.数组排序算法

1.冒泡排序

冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就交换位置,直到没有任何一对数字需要交换为止。

使用冒泡排序算法的时间复杂度为O(n^2),不适合处理大规模的数据集,但它是一种非常简单、直观的排序算法,适用于小规模数据的排序。

2. 直接选择排序

直接选择排序(Selection Sort)是一种简单直观的排序算法,它的基本思路是:每次从未排序的序列中选择最小的元素,将其放到已排序序列的末尾,直到所有元素都排好序为止。

直接选择排序的时间复杂度也为O(n^2),不适合处理大规模的数据集,但它的实现简单、容易理解,且在小规模数据的排序中表现优异。

3.直接选择排序

直接选择排序(Selection Sort)是一种简单直观的排序算法,它的基本思路是:每次从未排序的序列中选择最小的元素,将其放到已排序序列的末尾,直到所有元素都排好序为止。

直接选择排序的时间复杂度也为O(n^2),不适合处理大规模的数据集,但它的实现简单、容易理解,且在小规模数据的排序中表现优异。

习题-随机点名器

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值