Java SE——Java基础语法

 前言

欢迎来到我的博客,我是雨空集(全网同名),无论你是无意中发现我,还是有意搜索而来,我都感到荣幸。这里是一个分享知识、交流想法的平台,我希望我的博客能给你带来帮助和启发。如果你喜欢我的文章,别忘了收藏、点赞、关注,以便获取最新的内容。你还可以在文章下方留下你的想法和反馈,我非常欢迎你的意见。我会继续努力提供优质的内容。期待与你一起分享知识、互相学习,并建立一个积极的社区。让我们一起在这个知识之旅中取得进步!

本博客文章已收录至我的Java SE专栏,如需阅读其他有关博客笔记请转至该专栏下

传送门 -->Java SE_程序员雨空集


注释

对代码的说明与解释的文字

比如未来写代码,一下子看不明白就需要注释的帮助

Java中的注释分为三种:

  • 单行注释:
// 这是单行注释文字  

小知识:IDEA中默认的单行注释的快捷键是 Ctrl + /

  • 多行注释:
/*
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/
注意:多行注释不能嵌套使用。

小知识:IDEA中默认的多行注释的快捷键是 Ctrl + Shitf + /

  • 文档注释(暂时用不到):
/**
这是多行注释文字
这是多行注释文字
这是多行注释文字
*/

标识符

在编程过程中,经常需要在程序定义一些符号标记一些名称

例如:包名、类型、方法名....

这些符号就称为标识符

标识符的命名规则

硬性要求

必须要这么做,否则代码会报错。

  • 必须由数字、字母、_(下划线) 、美元符号$组成
  • 数字不能开头
  • 不能是关键字
  • 区分大小写的

软性要求

不这么做也可以,但这是行业中的一种规范,所以建议那么做。

下面要求参考于阿里巴巴Java开发手册规范

1. lowerCamelCase 小驼峰风格 —— 适用于变量名和方法名

  • 如果是一个单词,那么全部小写,比如:name
  • 如果是多个单词,那么从第二个单词开始,首字母大写,比如:firstName、maxAge

2. UpperCamelCase 大驼峰风格 —— 适用于类名

  • 如果是一个单词,那么首字母大写。比如:Demo、Test。
  • 如果是多个单词,那么每一个单词首字母都需要大写。比如:HelloWorld

3. 包名统一用小写形式

不管起什么名字,都要做到见名知意。


关键字

定义

  • 被Java赋予了特定含义的英文单词
  • 关键字的字母全部小写
  • 常用的代码编辑器,针对关键字有特殊颜色标识

注意:关键字很多,不用刻意去记。都会慢慢用到,慢慢记得的

abstract

assert

boolean

break

byte

case

catch

char

class

const

continue

default

do

double

else

enum

extends

final

finally

float

for

goto

if

implements

import

instanceof

int

interface

long

native

new

package

private

protected

public

return

strictfp

short

static

super

switch

synchronized

this

throw

throws

transient

try

void

volatile

while

public、class关键字

class关键字:

表示定义一个类。创建一个类。

类:Java项目最基本的组成单元,一个完整的Java项目有可能会有成千上万个类来组成的。

class后面跟随的就是这个类的名字,简称:类名(类名要和该Java文件名一致)。

在类名后面会有一对大括号,表示这个类的内容。

举例:

public class HelloWorld{
     
    
 }

解释:class表示定义类。

类名:HelloWorld

HelloWorld后面的大括号表示这个类的范围。

public关键字:

当我们在Java中使用public关键字时,它的作用就是表示这个类、方法或变量是公开的,可以被其他类访问和使用。就像是一个公共门户,其他类可以通过这个门户来访问公共的类、方法或变量。这样做的好处是可以让不同的类之间进行交互和共享数据,提高代码的灵活性和可复用性。所以,当我们在定义一个类时,如果希望其他类可以使用这个类,就需要使用public关键字来修饰它。


数据类型

*Java语言数据类型的分类

  • 基本数据类型
    • 整型类型:byte、short、int、long
    • 浮点类型:float、double
    • 字符类型:char
    • 布尔类型:boolean
  • 引用数据类型(面向对象会深入学习)
    • 类:class
    • 接口:interface
    • 数组
    • 枚举:enmu
    • 注解:annotation

基本数据类型

数据类型

关键字

内存占用

取值范围

整数

byte

1

负的2的7次方 ~ 2的7次方-1(-128~127)

short

2

负的2的15次方 ~ 2的15次方-1(-32768~32767)

int

4

负的2的31次方 ~ 2的31次方-1

long

8

负的2的63次方 ~ 2的63次方-1

浮点数

float

4

1.401298e-45 ~ 3.402823e+38

double

8

4.9000000e-324 ~ 1.797693e+308

字符

char

2

0-65535

布尔

boolean

1

true,false

注意:

  • Java中整数默认是 int 类型,浮动数默认是 double 类型
  • 各基本类型取值范围大小关系为:

double>float>long>int >short>byte


常量

常量就是在程序中固定不变的量,是不能改变的数据。

在Java中,常量包括整型常量、浮点型常量、字符常量、字符串常量、布尔常量和null常量。

整型常量

整数类型的数据。有二、八、十、十六进制表示方式。

  1. 二进制表示方式:以0b或0B开头,后面跟上一串由0和1组成的数字序列。例如,0b101表示十进制的5。
  2. 八进制表示方式:以0开头,后面跟上一串由0到7的数字组成的序列。例如,012表示十进制的10。
  3. 十进制表示方式:直接使用数字表示整数。例如,123表示十进制的123。
  4. 十六进制表示方式:以0x或0X开头,后面跟上一串由0到9和A到F(不区分大小写)的数字和字母组成的序列。例如,0xFF表示十进制的255。

浮点型常量

数学中的小数。

  • 分为单精度浮点数(float0)和双精度浮点数(double)
  • 单精度浮点数后面以 F 或 f 结尾,双精度浮点数以 D 或 d 结尾

在使用浮点数时也可以不加任何后缀,此时JVM会将浮点数默认为double类型

字符常量

表示一个字符,用一对英文半角格式的单引号(' ')括起来。

字符常量可以是英文字母、数字、标点符号和转义序列。

注意:转义序列是由两个字符组成的,通常表示一个特殊的字符或者具有特殊含义的字符序列。例如,\n 表示换行符,\t 表示制表符等。在Java中,这些转义序列被视为一个字符常量,即它们被当作一个字符进行处理。

'a'
'1'
'#'
'\n'

字符串常量

表示一串连续的字符,用一对英文半角格式的双引号(" ")括起来。

"4523"
"Hello world"

布尔常量

用于区分事物的真和加,有 true 和 false 两个值。

null 常量

null 常量只有一个值 null,表示对象的引用为空。


变量

定义

变量就在程序中临时存储数据的容器。但是这个容器中只能存一个值,是可以改变的。

定义格式

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

数据类型:

限定了变量当中能存储什么类型的数据。

如果要存10,那么数据类型就需要写整数类型。

如果要存10.0,那么数据类型就需要写小数类型。

变量名:其实就是这个容器的名字。

当以后想要使用变量里面的数据时,直接使用变量名就可以了。

数据值:真正存储在容器中的数据。

分号:表示语句结束的标志,就跟以前写作文时候的句号是一样的。

定义8种基本数据类型变量

public class VariableDemo3{  
    public static void main(String[] args){  
        // 1. 定义byte类型的变量,数据类型为byte,变量名为a,数据值为10  
        byte a = 10;  
        System.out.println(a);  // 输出:10  
  
        // 2. 定义short类型的变量,数据类型为short,变量名为b,数据值为20  
        short b = 20;  
        System.out.println(b);  // 输出:20  
  
        // 3. 定义int类型的变量,数据类型为int,变量名为c,数据值为30  
        int c = 30;  
        System.out.println(c);  // 输出:30  
  
        // 4. 定义long类型的变量,数据类型为long,变量名为d,数据值为123456789123456789L,注意长整型需要在数字后面加L或l  
        long d = 123456789123456789L;  
        System.out.println(d);  // 输出:123456789123456789  
  
        // 5. 定义float类型的变量,数据类型为float,变量名为e,数据值为10.1F,注意float类型需要在数字后面加F或f  
        float e = 10.1F;  
        System.out.println(e);  // 输出:10.1  
  
        // 6. 定义double类型的变量,数据类型为double,变量名为f,数据值为20.3  
        double f = 20.3;  
        System.out.println(f);  // 输出:20.3  
  
        // 7. 定义char类型的变量,数据类型为char,变量名为g,数据值为字符'a'  
        char g = 'a';  
        System.out.println(g);  // 输出:a  
  
        // 8. 定义boolean类型的变量,数据类型为boolean,变量名为h,数据值为true  
        boolean h = true;  
        System.out.println(h);  // 输出:true  
    }  
}

输出结果:


定义时需注意的点:

  • 定义 long 类型变量时,要在数据值的后面需要加上 L 后缀

大小写都可以

因为Java默认将整数值视为int类型,如果要表示long类型的数据,需要在数值后面加上 L 或 l 后缀,以告诉编译器这是一个long类型的值

long num = 20.3F;
  • 定义 float 类型变量时,要在数据值的后面需要加上 F 后缀

大小写都可以

因为Java默认将小数值视为double类型,如果要表示float类型的数据,需要在数值后面加上F或f后缀,以告诉编译器这是一个float类型的值。

float num = 20.3F;

注意事项

  1. 命名变量名时不能重复命名。在Java编程中,每个变量都有唯一的名称。如果你尝试使用已经存在的变量名来命名一个新的变量,你会得到一个编译错误。因此,在命名变量时,你需要确保你的变量名是独一无二的。
  2. 在一条语句中,可以定义多个变量。但是这种方式影响代码的阅读,所以了解一下即可:这是指你可以在同一行代码中定义多个变量。例如,int a, b, c; 这将定义三个整型变量a、b和c。然而,这种做法可能会降低代码的可读性,因为其他开发者可能需要额外的上下文才能理解每个变量的用途。通常,为了提高代码的可读性,最好分别定义每个变量。
  3. 变量在使用之前必须要赋值。(个人建议尽量变量定义后就赋值)在Java中,变量必须有值才能使用。如果你尝试使用一个未赋值的变量,Java编译器会报错。在定义变量时,你可以立即给它赋值,如 int a = 10; ,或者在你使用它之前任何时间给它赋值。如果你忘记了给变量赋值,那么在某些情况下,Java编译器会为你提供一个默认值(例如,对于整数类型,默认值为0)。然而,为了代码的清晰和避免潜在的错误,最好在使用变量之前明确地为其赋值。

变量的类型转换

在程序中,经常会遇到不同类型的数据进行运算,为解决数据类型不一致的问题,需要对数据的类型进行转换

例如,一个浮点数和一个整型相加,必须先将两个数转化成同一类型,才能继续运算

而类型转换又分为自动类型转换强制类型转换。

  1. 自动类型转换

自动类型转换也称为隐式类型转换,即在两种数据类型在转换的过程中不需要显式声明,有编译器自动完成。

需满足的条件:

  • 两种数据类型彼此兼容
  • 目标类型的取值范围大于源类型的取值范围
byte b = 3;
int x = b;

首先,我们声明了一个byte类型的变量b,并将其赋值为3。

然后,我们声明了一个int类型的变量x,并将其赋值为b。

在这个过程中,发生了自动类型转换。由于byte和int是兼容的数据类型,并且int的取值范围比byte大,编译器会自动将byte类型的值转换为int类型的值。因此,b的值3会被自动转换为x的值3。

需要注意的是,自动类型转换可能会导致精度损失或数据溢出。

在进行自动类型转换时,应该确保目标类型的取值范围足够大,以容纳源类型的所有可能取值。如果目标类型的取值范围不够大,可能会导致数据溢出或结果不准确。

3种可以进行自动类型转换的情况:

下面的3种可以理解就是上面所讲到的

  • 整数类型之间

byte 类型数据可以赋值给short、int、long类型

short 类型数据可以赋值给int、long类型

int 类型数据可以赋值给long类型

  • 整数类型转换为 float 类型

byte、char、short、int类型数据可以赋值给 float 类型

  • 其他类型转换为 double 类型

byte、char、short、int、long、float类型数据可以赋值给 double 类型


  1. 强制类型转换

强制类型转换也称为显式类型转换,指两种数据类型之间的转换需要进行显示声明。

强制类型转换的语法如下:

目标类型 变量名 = (目标类型) 表达式;

需要注意的是,强制类型转换可能会导致数据丢失或溢出。在进行强制类型转换时,应该确保目标类型可以容纳源类型的值,否则可能会导致数据溢出或结果不准确。

示例:

double d = 3.14; int x = (int) d;

声明了一个double类型的变量d,并将其赋值为3.14。

然后,我们声明了一个int类型的变量x,并将其赋值为d。

由于double类型的取值范围比int类型大,我们需要进行强制类型转换来将double类型的值转换为int类型的值。

在强制类型转换的过程中,编译器会将double类型的值截断为整数部分,并将其赋给int类型的变量x。因此,在这个例子中,x的值将会是3。

需要注意的是,强制类型转换可能会导致精度损失或数据溢出。在进行强制类型转换时,应该谨慎考虑可能的精度损失和数据溢出问题,并确保转换的结果是符合预期的


键盘录入

键盘录入是指从键盘输入数据,并将其作为程序的输入

在Java中,可以使用Scanner类来实现键盘录入功能

使用Scanner类进行键盘录入的步骤如下:

第一步:导包

在使用Scanner类之前,需要先导入java.util.Scanner包。

可以在代码的开头添加如下导入语句:

import java.util.Scanner;

第二步:创建Scanner对象

在代码中创建一个Scanner对象,可以使用以下语句:

Scanner scanner = new Scanner(System.in);

这样就创建了一个名为scanner的Scanner对象,用于接收键盘输入。

第三步:接收数据

使用Scanner对象的方法来接收键盘输入的数据。例如,可以使用nextInt()方法来接收一个整数,使用nextDouble()方法来接收一个浮点数,使用nextLine()方法来接收一行字符串等等。

示例:

import java.util.Scanner; // 导入Scanner类所在的包

public class KeyboardInputExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 创建Scanner对象,用于接收键盘输入
        
        System.out.print("请输入一个整数:"); // 提示用户输入一个整数
        int num = scanner.nextInt(); // 使用nextInt()方法接收一个整数,并将其保存到变量num中
        System.out.println("您输入的整数是:" + num); // 打印用户输入的整数
        
        System.out.print("请输入一个浮点数:"); // 提示用户输入一个浮点数
        double decimal = scanner.nextDouble(); // 使用nextDouble()方法接收一个浮点数,并将其保存到变量decimal中
        System.out.println("您输入的浮点数是:" + decimal); // 打印用户输入的浮点数
        
        scanner.nextLine(); // 清空输入缓冲区中的换行符
        
        System.out.print("请输入一行字符串:"); // 提示用户输入一行字符串
        String str = scanner.nextLine(); // 使用nextLine()方法接收一行字符串,并将其保存到变量str中
        System.out.println("您输入的字符串是:" + str); // 打印用户输入的字符串
    }
}

首先导入了java.util.Scanner包。然后,创建了一个Scanner对象scanner,并传入System.in作为参数,表示从标准输入(键盘)接收数据。

接下来,使用nextInt()方法接收一个整数,并将其保存到变量num中。然后,使用nextDouble()方法接收一个浮点数,并将其保存到变量decimal中。最后,使用nextLine()方法接收一行字符串,并将其保存到变量str中。

需要注意的是,在使用nextLine()方法之前,如果之前使用了nextInt()nextDouble()等方法,可能会导致输入缓冲区中仍然存在换行符。为了避免这个问题,可以在接收字符串之前,使用一个额外的nextLine()方法来清空输入缓冲区。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨空集

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值