首页 > 编程语言 >Java基础语法

Java基础语法

时间:2024-07-25 15:06:32浏览次数:14  
标签:类型转换 运算符 Java 变量 数据类型 基础 语法 类型

Java基础语法

目录

1.关键字和保留字

Java中的关键字(Keywords)和保留字(Reserved Words)是Java编程语言中具有特殊含义的标识符,它们在Java编译器中有特定的作用。以下是对Java中的关键字与保留字的详细解释:

关键字(Keywords)

Java中的关键字是对Java编译器有特殊意义的字符串,它们用来表示一种数据类型、程序的结构或控制流程等。Java关键字不能用作变量名、方法名、类名、包名和参数等。Java的关键字数量可能会随着版本的更新而有所变化,但截至当前时间(2024年),Java中常用的关键字包括但不限于:

关键字 描述
abstract 声明抽象类、抽象方法
assert 断言,用于调试
boolean 基本数据类型之一,表示逻辑值true或false
break 跳出循环或switch语句
byte 基本数据类型之一,表示8位整数
case switch语句中的一个分支
catch 捕获异常
char 基本数据类型之一,表示单个字符
class 声明类
continue 跳过当前循环的剩余语句,继续下一次循环的迭代
default switch语句中的默认分支,或在没有显式指定修饰符时的访问级别
do 循环的开始,与while一起使用
double 基本数据类型之一,表示双精度浮点数
else if语句的备选分支
enum 枚举类型
extends 表示一个类是另一个类的子类
final 表示类、方法或变量不可被继承、重写或修改
finally 无论是否发生异常,都会执行的代码块
float 基本数据类型之一,表示单精度浮点数
for 循环语句
if 条件语句
implements 表示一个类实现了某个接口
import 引入包或类
instanceof 测试一个对象是否是某个类的实例
int 基本数据类型之一,表示整数
interface 声明接口
long 基本数据类型之一,表示长整数
native 声明一个方法是由与Java不同的语言(如C或C++)实现的
new 创建对象的实例
package 声明包
private 表示私有访问级别,只能被类本身访问
protected 表示受保护访问级别,能被类本身、子类及同一个包中的类访问
public 表示公有访问级别,能被任何类访问
return 从方法中返回一个值
short 基本数据类型之一,表示短整数
static 表示静态的,属于类而不是类的某个特定实例
strictfp 严格浮点,保证浮点运算的精确性
super 引用当前对象的直接父类对象(在子类中)
switch 选择语句
synchronized 同步方法或代码块,保证在同一时刻只有一个线程可以执行该方法或代码块
this 引用当前对象
throw 抛出一个异常
throws 声明一个方法可能抛出的异常列表
transient 声明一个实例变量不应该被序列化
try 尝试执行一个可能抛出异常的代码块
void 表示方法没有返回值
volatile 表示变量可能会被意外地修改,用于多线程编程
while 循环语句,当条件为真时执行循环体

保留字(Reserved Words)

Java中的保留字是那些在当前Java版本中尚未使用,但在未来版本中可能会作为关键字使用的字符串。在编写Java程序时,应避免使用这些保留字作为变量名、方法名、类名等。Java中的保留字包括:

  • goto:在其他编程语言中常用作跳转语句,但在Java中未被使用,保留为未来可能的功能。
  • const:在其他编程语言中用于声明

2.标识符

2.1.命名规则

1. 标识符的组成

  • 标识符可以由字母(A-Z,a-z)、数字(0-9)、美元符号($)和下划线(_)组成。
  • 标识符不能包含其他特殊字符或空格。

2. 标识符的首字符

  • 标识符的第一个字符必须是字母、美元符号($)或下划线(_)。
  • 标识符不能以数字开头。

3. 标识符的命名限制

  • 标识符不能是Java的关键字和保留字。例如,不能将标识符命名为ifforwhileclass等。
  • 标识符是大小写敏感的。例如,myVariablemyvariable是两个不同的标识符。

4. 命名风格

  • 类名:建议使用大驼峰命名法(UpperCamelCase),即每个单词的首字母都大写。例如,MyClass
  • 方法名和变量名:建议使用小驼峰命名法(lowerCamelCase),即第一个单词的首字母小写,后续每个单词的首字母大写。例如,myMethodNamelocalValue
  • 常量名:建议使用全大写字母和下划线分隔单词。例如,MY_CONSTANTMAX_STOCK_COUNT

5. 其他建议

  • 标识符应具有描述性,以便其他开发人员能够理解其用途。
  • 对于包名,建议使用小写字母和反向域名来命名包。例如,com.example.mypackage
  • 对于枚举常量名,也建议使用全大写字母和下划线分隔单词。
  • 避免使用单个字符作为变量名或方法名,除非在某些特殊情况下。
  • 尽量不要在标识符中使用中文或其他非ASCII字符,以避免潜在的编码问题。
  • 避免与Java类库的类名或接口名重名,以减少混淆。

6. 示例

标识符类型 示例
类名 MyClassUserDO
方法名 myMethodNameshowTime
变量名 localValuehttpMessage
常量名 MY_CONSTANTMAX_STOCK_COUNT

遵循这些命名规则和建议,可以使Java代码更加清晰、易于理解和维护。

2.2.驼峰命名法

驼峰命名法(CamelCase)是编程中常用的一种命名约定,特别是在使用英文单词为变量、函数、方法、类、接口等命名时。它通过在单词之间不使用空格或任何其他分隔符,而将每个单词的首字母大写(在某些情况下,第一个单词的首字母小写)来区分单词。根据首字母是否大写,驼峰命名法可以进一步细分为大驼峰命名法(UpperCamelCase)和小驼峰命名法(lowerCamelCase)。

大驼峰命名法(UpperCamelCase)

  • 也称为帕斯卡命名法(PascalCase)。
  • 第一个单词的首字母大写,后续每个单词的首字母也大写。
  • 常用于类名、接口名、枚举类型名等。
  • 示例MyClassUserDetailsHttpResponse

小驼峰命名法(lowerCamelCase)

  • 第一个单词的首字母小写,后续每个单词的首字母大写。
  • 常用于变量名、方法名、属性名等。
  • 示例myVariablegetUserDetailshttpResponseCode

注意事项

  • 驼峰命名法使得代码更易于阅读,尤其是在不使用分隔符的情况下,它能够通过单词的大小写变化来区分不同的单词。
  • 在使用驼峰命名法时,应该避免使用缩写,除非该缩写是广泛认可的。如果必须使用缩写,并且缩写可能产生歧义,则应该考虑使用更明确的命名方式。
  • 驼峰命名法在不同的编程语言中有不同的应用方式和约定。例如,JavaScript中通常使用小驼峰命名法来命名变量和函数,而Java中则更倾向于使用大驼峰命名法来命名类名。
  • 除了驼峰命名法外,还有其他命名约定,如蛇形命名法(snake_case,使用下划线分隔单词)和凯鲍命名法(kebab-case,使用短横线分隔单词),它们在不同的编程语言或社区中有不同的应用。

2.3.变量

在Java中,变量是存储数据值的基本单元。每个变量都有一个类型,该类型决定了变量可以存储什么类型的数据,以及可以对这些数据进行哪些操作。变量还必须有一个名称(即标识符),通过这个名称可以访问变量中的数据。

声明变量

在Java中,声明变量的一般语法是:

java复制代码

type variableName;

其中,type 是变量的数据类型(如 intdoubleString 等),variableName 是变量的名称。

初始化变量

声明变量后,通常会在声明时或之后不久对其进行初始化,即给它分配一个初始值。初始化变量的语法是:

java复制代码

type variableName = value;

或者,如果已经声明了变量,可以单独进行初始化:

java复制代码

variableName = value;

示例

public class Main {  
    public static void main(String[] args) {  
        // 声明并初始化变量  
        int age = 30;  
        double salary = 5000.50;  
        String name = "John Doe";  
  
        // 声明变量后初始化  
        boolean isEmployed;  
        isEmployed = true;  
  
        // 使用变量  
        System.out.println("Age: " + age);  
        System.out.println("Salary: $" + salary);  
        System.out.println("Name: " + name);  
        System.out.println("Is Employed? " + isEmployed);  
    }  
}

变量作用域

变量的作用域指的是变量在程序中可以被访问的范围。根据声明的位置,变量可以是局部变量、实例变量(成员变量)、类变量(静态变量)等。

  • 局部变量:在方法或代码块中声明的变量,其作用域仅限于声明它的方法或代码块。
  • 实例变量:在类中但在任何方法之外声明的变量,其作用域是整个类。每个类的实例(对象)都会有自己的实例变量副本。
  • 类变量:使用 static 关键字声明的变量,其作用域是整个类。所有类的实例共享同一个类变量。

变量类型

Java是一种静态类型语言,意味着每个变量在声明时都必须指定其类型。Java中的数据类型可以分为两大类:基本数据类型和引用数据类型。

  • 基本数据类型:包括整数类型(byteshortintlong)、浮点类型(floatdouble)、字符类型(char)和布尔类型(boolean)。
  • 引用数据类型:不是基本数据类型的数据类型都是引用数据类型,如类(class)、接口(interface)、数组等。引用数据类型变量存储的是对象的引用(即对象的内存地址),而不是对象本身。

2.4.数据类型

Java中的数据类型分为两大类:基本类型(Primitive Types)和引用类型(Reference Types)。以下是这两大类数据类型的详细解释:

一、基本类型

基本类型又称为简单数据类型,是不能简化的、内置的数据类型,由编程语言本身定义,表示了真实的数字、字符和整数。Java中共有八种基本数据类型,它们分别是:

  1. 整数类型

    • byte:占用1个字节,取值范围为-128到127。
    • short:占用2个字节,取值范围为-32768到32767。
    • int:占用4个字节,取值范围为-2,147,483,648到2,147,483,647。
    • long:占用8个字节,取值范围为-263到263-1。注意,在声明long类型变量时,如果字面量是整数,则需要在数字后面加上Ll(通常使用大写L以避免与数字1混淆)。
  2. 浮点类型

    • float:占用4个字节,单精度浮点数,有效位数大约为6~7位。在声明float类型变量时,如果字面量是浮点数,则需要在数字后面加上Ff
    • double:占用8个字节,双精度浮点数,有效位数大约为15~16位。
  3. 字符类型

    • char:占用2个字节,用于存储单个字符,取值范围为0到65535。
  4. 布尔类型

    • boolean:用于表示逻辑上的真或假,只有两个值:truefalse。虽然boolean类型在JVM中可能不直接占用一个字节,但从概念上讲,可以认为它占用一个字节的存储空间。

二、引用类型

引用类型在Java中是指向对象的变量,它们不是直接存储数据值,而是存储数据的引用地址(即对象的内存地址)。Java中的引用类型主要有三种:

  1. 类(Class)

    • Java中的类是对象的模板,它定义了对象的属性和方法。类的实例(即对象)是引用类型的变量。
  2. 接口(Interface)

    • 接口是一种引用类型,是一种抽象的类型,它是一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。
  3. 数组(Array)

    • 数组是一种引用数据类型,可以存储相同类型的数据的集合。在Java中,数组一旦被创建,其长度就不可改变。

此外,还有一些特殊的引用类型,如枚举(Enum)和注解(Annotation),但它们在传统的Java数据类型分类中不常被提及为主要的引用类型。

三、基本类型与引用类型的区别

  • 存储位置:基本类型变量存储在栈内存中,而引用类型变量(实际上是对象的引用)存储在栈内存中,对象本身存储在堆内存中。
  • 初始化:基本类型变量在声明时会自动初始化为默认值(如int为0,booleanfalse等),而引用类型变量在声明时默认值为null,因为它们不直接存储数据值,而是存储数据的引用地址。
  • 使用方式:基本类型变量可以直接使用其值进行运算和比较等操作,而引用类型变量需要通过其引用来访问对象的方法和属性。

2.5.数据类型的转换

Java中数据类型的转换主要分为两大类:自动类型转换(也称为隐式类型转换)和强制类型转换(也称为显式类型转换)。

1. 自动类型转换(隐式类型转换)

自动类型转换发生在较小的数据类型向较大的数据类型转换时,这种转换是自动进行的,不需要程序员显式地指定。比如,byteshortchar 类型的数据可以自动转换为 int 类型的数据。在进行运算时,如果两边的数据类型不一致,会首先进行自动类型转换,使两边的数据类型一致后再进行运算。

示例

byte a = 10;  
int b = a; // 自动将 byte 类型转换为 int 类型

2. 强制类型转换(显式类型转换)

强制类型转换发生在较大的数据类型向较小的数据类型转换时,由于这种转换可能会丢失精度,因此需要程序员显式地指定。强制类型转换的格式为 (类型名)变量名

示例

int a = 100;  
byte b = (byte)a; // 强制将 int 类型转换为 byte 类型,注意这里可能会有精度丢失

在上面的示例中,a 是一个 int 类型的变量,值为 100。当我们尝试将 a 的值赋给 byte 类型的变量 b 时,因为 byte 类型的取值范围是 -128127,所以直接赋值会导致编译错误。通过强制类型转换 (byte)a,我们可以显式地告诉编译器我们知道这种转换可能会导致数据丢失,但仍然希望进行这种转换。

注意事项

  • 强制类型转换可能会导致数据丢失,特别是当较大类型的数据超出较小类型的表示范围时。
  • 在进行自动类型转换时,程序员通常不需要做任何操作,但应了解转换的规则,以避免意外的结果。
  • 在进行类型转换时,应始终注意数据类型的范围,以确保转换后的数据在预期范围内。
  • 布尔类型(boolean)不能与其他任何基本数据类型进行转换。
  • 字符串(String)可以与基本数据类型进行转换,但这种转换不是通过类型转换操作符完成的,而是通过包装类提供的方法或字符串的构造方法完成的。例如,Integer.toString(int i) 将整数转换为字符串,Integer.parseInt(String s) 将字符串转换为整数。

2.6.运算符

Java 中的运算符用于对变量和值进行各种算术运算、逻辑运算、位运算、赋值运算等。Java 的运算符可以分为以下几类:

  1. 算术运算符:用于执行基本的数学运算,如加、减、乘、除等。
    • +:加法
    • -:减法
    • *:乘法
    • /:除法
    • %:取余(模)
    • ++:自增
    • --:自减
  2. 赋值运算符:用于给变量赋值。
    • =:赋值
    • +=-=*=/=%=:复合赋值运算符
  3. 关系运算符(也称为比较运算符):用于比较两个值的大小。
    • >:大于
    • <:小于
    • >=:大于等于
    • <=:小于等于
    • ==:等于(比较的是值是否相等)
    • !=:不等于
  4. 逻辑运算符:用于进行逻辑判断。
    • &&:逻辑与(AND)
    • ||:逻辑或(OR)
    • !:逻辑非(NOT)
  5. 位运算符:用于对二进制位进行操作。
    • &:按位与
    • |:按位或
    • ^:按位异或
    • ~:按位取反
    • <<:左移
    • >>:右移(带符号)
    • >>>:无符号右移
  6. 条件运算符(三元运算符):
    • 条件 ? 表达式1 : 表达式2:如果条件为真,则执行表达式1,否则执行表达式2。
  7. 字符串连接运算符:
    • +:当用于字符串时,用作连接运算符。
  8. 类型转换运算符:
    • 强制类型转换:(类型)变量,如 (int)floatVarfloatVar 转换为 int 类型。
  9. instanceof:
    • 用于判断一个对象是否是一个类的实例。
  10. 其他运算符:
    • ? : 条件运算符(已在逻辑运算符中提及)
    • :: 方法引用运算符(Java 8 引入)

这些运算符在Java编程中起着至关重要的作用,它们允许你执行复杂的数学计算、逻辑判断、位操作以及控制程序的流程。掌握这些运算符的使用对于编写有效的Java代码至关重要。

标签:类型转换,运算符,Java,变量,数据类型,基础,语法,类型
From: https://www.cnblogs.com/tubby233/p/18323165

相关文章

  • 信息收集:网络空间测绘FOFA,查询语法最全使用方法(图文解析)
    前言经小绿书粉丝投稿,特意搜集了一些fofa的使用教程和一些高级用法什么是FOFA?官网描述:FOFA-网络空间资产搜索引擎是华顺信安推出的一款通过对全球网络对外开放服务的资产进行主动或被动方式探测、抓取、存储,分析整理不同种类的网络空间资产指纹信息(规则),并对符合规则的资产......
  • Linux基础
    1、命令    1.1、什么是命令、命令行命令:Linux操作指令、系统内置的程序、可以以字符化的形式使用命令行:Linux终端、可以提供字符化的操作页面供命令执行    1.2、Linux命令的通用格式     command[-options][parameter]command:命令本体option......
  • 0基础成功转行网络安全工程师,年薪30W+,经验总结都在这(建议收藏)
    我曾经是一名普通的销售人员,工作了三年,每天重复着相同的工作内容,感觉自己的职业生涯停滞不前,毫无发展前景。我开始思考,如何才能让自己的职业生涯更有意义,更具有挑战性。经过一番调研,我决定转行网络安全工程师。工作了越久,越觉得当初转行网络安全的决定还是非常正确的。目......
  • 转行网络安全,应该选哪个方向?(非常详细)零基础入门到精通,收藏这一篇就够了
    随着互联网技术的快速发展和广泛应用,网络安全形势日益严峻,各种网络攻击和安全威胁不断涌现,给个人、企业乃至国家带来了巨大的风险。为了应对网络风险,网络安全越来越被重视,开始成为入行互联网的备选岗位。网络安全方向众多,涉及到网络安全生命全周期,方向多达几十种。网络安......
  • Java8 函数式编程和Lambda
    lambda初识lambda表达式一个简单的方法,比较两个Integer:publicvoidTest1(){ Comparator<Integer>com=newComparator<Integer>(){ @Override publicintcompare(Integero1,Integero2){ returnInteger.compare(o1,o2); } }; TreeSet<Integer>......
  • JavaWeb Servlet
    Servlet入门Servlet是Java提供的一门动态web资源开发技术。简而言之,不同用户访问同样的资源会看到不一样的效果。Servlet是JavaEE规范之一,其实是一个接口。1快速入门1.1创建web项目,导入Servlet依赖坐标<dependency><groupId>javax.servlet</groupId>......
  • java之接口
    在java中,接口是一种用来定义程序的一种协议,它用来描述类或结构的一组相关行为。接口是由抽象类衍生的一个概念,并由此产生了一种编程方式。这种编程方式称为面向接口编程。面向接口编程就是将程序的不同业务逻辑相分离,以接口的形式对接不同的业务模块。在java中,使用接口的目......
  • markdown的基本语法
    markdown的使用说明一、标题语法:#(一级标题)##(二级标题)###(三级标题)......代码:#这是一级标题##这是二级标题效果:这是一级标题这是二级标题快捷键:Ctrl+数字1~6可以快速将选中的文本调成对应级别的标题Ctrl+0可以快速将选中的文本调成普通文本C......
  • JavaWeb项目中动态拼接sql语句
    业务需求描述:图中的查询框在分条件查询用户信息列表时,前端可能会传回一个条件或多个条件,此时要对不同的条件进行sql语句的不同书写,前端传的情况有很多种,所以如果分情况写sql语句会比较死,并且不够灵活,而且书写的内容会很多,所以要想一种办法来进行不同情况的sql语句拼接。参数......
  • python—NumPy基础(3)
    文章目录算术函数算术函数的使用算术函数中out参数的使用mod()函数的使用统计函数power()函数的使用median()函数的使用mean()函数的使用函数的使用其他常用函数tile()和repeat()函数的使用roll()函数的使用resize()函数的使用replace()和put()函数的使savetxt()和lo......