二、java基础语法

2024-01-09 18:27:43

二、Java基础语法

1.注释

Java中的注释分为三种:

  • 单行注释:
// 这是单行注释文字
  • 多行注释:
/*
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/
注意:多行注释不能嵌套使用。
  • 文档注释(暂时用不到):
/**
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/

注意点:

? 注释的内容不会参与编译和运行的,仅仅是对代码的解释说明而已。

? 所以,不管在注释当中写什么内容,都不会影响代码运行的结果。

2.字面量

在Java中,字面量是指程序中直接出现的常数值或字符串。它们是一些固定的值,不需要计算或者查找,可以直接使用。

Java支持以下几种类型的字面量:

  • 整数字面量:由数位序列组成,包括十进制、二进制(以0b或0B开头)、八进制(以0开头)和十六进制(以0x或0X开头)。
  • 浮点数字面量:由数值和指数组成,包括普通浮点数(如1.23)和科学计数法表示的浮点数(如1.23e2)。
  • 字符字面量:用单引号包围的一个字符,如’a’或’b’。
  • 字符串字面量:用双引号包围的一组字符组成的字符串,如"Hello, World!"。
  • 布尔字面量:只有两个值,true和false。
  • null字面量:表示一个空对象引用(null不能直接打印,如果想直接打印,需要以字符串的形式打印) 。
字面量类型说明程序中的写法
整数不带小数的数字666,-88
小数带小数的数字13.14,-5.21
字符必须使用单引号,有且仅能一个字符‘A’,‘0’, ‘我’
字符串必须使用双引号,内容可有可无“HelloWorld”,“黑马程序员”
布尔值布尔值,表示真假,只有两个值:true,falsetrue 、false
空值一个特殊的值,空值(null不能直接打印,如果想直接打印,需要以字符串的形式打印)值是:null
public class Demo {
    public static void main(String[] args) {
        System.out.println(66); // 输出一个整数
        System.out.println(5.21); // 输出一个小数
        System.out.println('a'); // 输出一个字符
        System.out.println(true); // 输出boolean值true
        System.out.println(false); // 输出boolean值false
        System.out.println("null"); // 输出字符串null
        System.out.println("Java程序"); // 输出字符串
    }
}

3.变量

变量是一个用于存储和表示数据的标识符(identifier),用于引用计算机内存中的一个位置或值。
变量可以存储各种不同类型的数据,例如数字、字符、字符串、布尔值等。

3.1 定义格式

? 数据类型 变量名 = 数据值;

【注】不可以忘了分号“;”

 Java语句的结束需要添加分号!!!

3.2 注意事项

  • 变量名不能重复
  • 在一条语句中,可以定义多个变量。但是这种方式影响代码的阅读,所以了解一下即可。
  • 变量在使用之前必须要赋值。

4. 数据类型

Java中有两种基本的数据类型:原始数据类型和引用数据类型。
原始数据类型是Java语言预定义的基本数据类型,用于存储简单的值
而引用数据类型则是对对象的引用。

4.1 基本数据

Java的原始数据类型可以分为以下几类:

  • 整数类型:byte、short、int、long
  • 浮点数类型:float、double
  • 字符类型:char
  • 布尔类型:boolean
数据类型关键字内存占用取值范围
整数byte1负的2的7次方 ~ 2的7次方-1(-128~127)
short2负的2的15次方 ~ 2的15次方-1(-32768~32767)
int4负的2的31次方 ~ 2的31次方-1
long8负的2的63次方 ~ 2的63次方-1
浮点数float41.401298e-45 ~ 3.402823e+38
double84.9000000e-324 ~ 1.797693e+308
字符char20-65535
布尔boolean1true,false
e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方。
在java中整数默认是int类型,浮点数默认是double类型。

整数类型和小数类型的取值范围大小关系:double > float > long > int > short > byte

这些原始数据类型具有不同的存储容量和取值范围,可以根据需求选择适当的类型来存储数据。

最为常用的数据类型选择:

  • 在定义变量的时候,要根据实际的情况来选择不同类型的变量。

    比如:人的年龄,可以选择byte类型。

    比如:地球的年龄,可以选择long类型。

  • 如果整数类型中,不太确定范围,那么默认使用int类型。

  • 如果小数类型中,不太确定范围,那么默认使用double类型。

  • 如果要定义字符类型的变量,那么使用char

  • 如果要定义布尔类型的变量,那么使用boolean

从内存的角度解释:

  • 数据值是存储在自己的空间中的
  • 赋值给其他变量,赋的是真实的值

4.2 引用数据类型

在Java中,引用数据类型是通过类、接口和数组来表示的。

Java提供了一些内置的引用数据类型,例如:

  • 类类型:用于创建对象的类,例如String、Integer等。

  • 接口类型:用于声明接口,例如List、Map等。

  • 数组类型:用于存储一组相同类型的元素的数据结构。

     引用数据类型存储的是对象的引用,而不是对象本身。通过引用,我们可以操作对象的属性和方法。
    

从内存的角度解释:

  • 数据值是存储在其他空间中的,自己空间中存储的是地址值
  • 赋值给其他变量,赋的是地址值

4.3 自定义数据类型

此外,Java还支持自定义的数据类型,我们可以使用类和接口来定义自己的数据类型。

在Java中,我们可以使用类和接口来定义自定义的数据类型。
自定义数据类型可以更好地满足程序的需求,提高程序的可读性、可维护性和灵活性。

定义一个类可以使用以下语法格式:

class 类名 {
    // 类的成员变量和方法
}

在类中,我们可以定义一些成员变量来存储数据,以及一些方法来操作数据。例如,下面的代码定义了一个Person类,该类包括姓名和年龄两个成员变量,并且提供了getName和getAge两个方法来获取这些成员变量的值:

class Person {
    String name;   // 姓名
    int age;       // 年龄

    String getName() {
        return name;
    }

    int getAge() {
        return age;
    }
}

我们创建一个Person对象可以使用以下语句:

Person person = new Person();
person.name = "Alice";
person.age = 25;

在这个示例中,我们使用new操作符创建了一个Person对象,并使用.运算符给name和age成员变量赋值。

除了类之外,Java还可以使用接口来定义自定义数据类型。

一个接口是一个抽象的数据类型,它包含了一组方法的声明。可以将接口看作是一种能力或者协议,我们可以让类实现接口来具备这些能力或者遵守这些协议。

例如,下面的代码定义了一个Drawable接口,包含了一个draw方法的声明:

interface Drawable {
    void draw();
}
如果一个类实现了这个接口,就必须实现draw方法。这样,我们就可以将这个类看作是可绘制的(Drawable)。

5.标识符

在Java语言中,标识符(identifier)是用来标识Java程序中各种元素的命名,包括类名、方法名、变量名、常量名等。

5.1 命名规则

Java标识符的命名有一定的规则,下面是Java标识符的一些要求:

  • Java标识符只能由字母、数字、下划线(_)和美元符号($)组成。
  • Java标识符的第一个字符必须是字母或者下划线(_)或者美元符号($)。
  • Java标识符不能是Java的关键字和保留字,这些都是Java中使用的特殊单词和符号,例如class、public、private等。
  • Java标识符是区分大小写的。

根据以上规则,以下都是合法的Java标识符:

age
_firstName
$lastName
isValid
MAX_VALUE

以下则是不合法的Java标识符:

1name      // 不能以数字开头
first-name // 不能包含连续的横线
class      // 不能使用Java的关键字

5.2 小驼峰命名法

当在Java中使用驼峰命名法来命名标识符时,一般有两种规则:小驼峰命名法(camel case)和大驼峰命名法(Pascal case)。

小驼峰命名法(camel case):

  • 首字母小写。
  • 第一个单词的首字母小写,后续单词的首字母大写。
  • 例子:firstName、lastName、userName。

一般来说,小驼峰命名法适用于变量、方法、参数和局部变量等。

以下是一些示例,展示了小驼峰命名法和大驼峰命名法的应用:

// 小驼峰命名法
public class student{
int studentId;
String firstName;
void myFunction();
int numberOfStudents;
}

5.3 大驼峰命名法

大驼峰命名法(Pascal case):

  • 首字母大写。

  • 每个单词的首字母都大写。

  • 例子:Person、HelloWorld、MyClass。

    大驼峰命名法适用于类、接口、枚举和常量等。

// 大驼峰命名法
class Person {
    String firstName;
    int age;
    void sayHello();
}

5.4 阿里巴巴命名规范细节:

  • 尽量不要用拼音。但是一些国际通用的拼音可视为英文单词。

    正确:alibaba、hangzhou、nanjing

    错误:jiage、dazhe

  • 平时在给变量名、方法名、类名起名字的时候,不要使用下划线或美元符号。

    错误:_name

    正确:name

6.运算符和表达式

运算符和表达式
(之后章节会详细讲到)

7 转换

在Java中,我们经常需要将一种数据类型转换为另一种数据类型。

这种转换通常分为两种类型:

  • 隐式转换
  • 强制转换

7.1 隐式转换

隐式转换指的是Java自动将一种数据类型转换为另一种兼容的数据类型。

例如,当一个整数类型的值赋值给一个浮点数类型变量时,Java将自动执行一个从整数类型到浮点数类型的转换。

此时不需要我们额外写代码单独实现,是程序自动帮我们完成的。

1.下面是一些常见的隐式转换的规则:

  • byte类型 -> short类型 -> int类型 -> long类型 -> float类型 -> double类型

  • 所有整数类型(即 byte, short, int, long 和 char )都可以自动转换为浮点型(即 float 或 double)。

2.提升规则:

  • 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算。
  • byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。

7.2 强制转换

强制类型转换指的是将一个数据类型显式地转换为另一个数据类型。

语法如下:

(目标类型) 原始数据;

例如,将一个double类型转为int类型,可以使用如下代码:

double d = 2.5;
int i = (int) d;

需要注意一下几点:

  • 强制类型转换可能导致信息的丢失或精度的损失。因此,我们需要谨慎地使用强制类型转换。
  • 只能对兼容的数据类型进行转换,否则会编译错误。
  • 在进行强制类型转换时,需要考虑目标类型的取值范围,如果原始数据超过了目标类型的取值范围,将会产生错误的结果。

8 字符串或字符的"+"操作

  • 字符串的加法操作是用于字符串连接
  • 字符的加法操作是用于ASCII码相加

8.1 字符串的"+"操作

字符串的加法操作(字符串连接):字符串的加法操作(+)用于连接两个字符串,产生一个新的字符串。
  • 当+操作中出现字符串时,此时就是字符串的连接符,会将前后的数据进行拼接,并产生一个新的字符串。
  • 当连续进行+操作时,从左到右逐个执行的。

例如:

String str1 = "Hello";
String str2 = "world";
String result = str1 + " " + str2;
System.out.println(result);

输出结果为:“Hello world”。在此例中,str1和str2是两个字符串,通过加法操作进行了连接,并赋值给result变量。

8.2 字符的"+"操作

字符的加法操作(ASCII码相加): 字符的加法操作(+)实际上是将字符的ASCII码值相加,得到一个整数结果。例如:
  • 当+操作中出现了字符,会拿着字符到计算机内置的ASCII码表中去查对应的数字,然后再进行计算。
char c1 = 'A';
char c2 = 'B';
int result = c1 + c2;
System.out.println(result);

输出结果为:131。在此例中,c1和c2是两个字符,通过加法操作将它们的ASCII码值相加得到131。

9. 流程控制语句

流程控住语句
(在之后章节有详细总结)

文章来源:https://blog.csdn.net/kuxiaoyang/article/details/135406974
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。