JavaSE:基础语法

JavaSE:基础语法

注释

Java中的注释有三种:

  • 单行注释:只能注释当前行,以//开始,直到行结束

//输出HelloWorld!

  • 多行注释:注释一段文字,以/ * 开始以 * / 结束!

/* 这是我们Java程序的主入口, main方法也是程序的主线程。 */

  • 文档注释:用于生产API文档,配合JavaDoc。

    /**再按回车键生成文档注释

平时我们编写代码,在代码量比较少的时候,我们还可以看懂自己写的,但是当项目结构一旦复杂起

来,我们就需要用到一个注释了,注释就类似于我们上学时候写的笔记,我们看着笔记就知道自己写的

什么东西了!平时我们一定要养成编写注释的习惯。

标识符

Java语言中,对于变量,常量,函数,语句块也有名字,我们统统称之为Java标识符。标识符是用来给类、对象、方法、变量、接口和自定义数据类型命名的。

关于 Java 标识符,有以下几点需要注意:

  • 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始

  • 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合

  • 不能使用关键字作为变量名或方法名。

  • 标识符是大小写敏感的

  • 合法标识符举例:age、$salary、_value、__1_value

  • 非法标识符举例:123abc、-salary、#abc

关键字

Java关键字是对Java编译器有特殊含义的字符串,是编译器和程序员的一个约定,程序员利用关键字来告诉编译器其声明的变量类型、类、方法特性等信息。Java语言共定义了如下所示的关键字。

关键字 含义
abstract 表明类或者成员方法具有抽象属性
assert 断言,用来进行程序调试
boolean 基本数据类型之一,声明布尔类型的关键字
break 提前跳出一个块
byte 基本数据类型之一,字节类型
case 用在switch语句之中,表示其中的一个分支
catch 用在异常处理中,用来捕捉异常
char 基本数据类型之一,字符类型
class 声明一个类
const 保留关键字,没有具体含义
continue 回到一个块的开始处
default 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现
do 用在do-while循环结构中
double 基本数据类型之一,双精度浮点数类型
else 用在条件语句中,表明当条件不成立时的分支
enum 枚举
extends 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口
final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float 基本数据类型之一,单精度浮点数类型
for 一种循环结构的引导词
goto 保留关键字,没有具体含义
if 条件语句的引导词
implements 表明一个类实现了给定的接口
import 表明要访问指定的类或包
instanceof 用来测试一个对象是否是指定类型的实例对象
int 基本数据类型之一,整数类型
interface 接口
long 基本数据类型之一,长整数类型
native 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new 用来创建新实例对象
package
private 一种访问控制方式:私用模式
protected 一种访问控制方式:保护模式
public 一种访问控制方式:共用模式
return 从成员方法中返回数据
short 基本数据类型之一,短整数类型
static 表明具有静态属性
strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循[IEEE 754](https://baike.baidu.com/item/IEEE 754?fromModule=lemma_inlink)算术规范
super 表明当前对象的父类型的引用或者父类型的构造方法
switch 分支语句结构的引导词
synchronized 表明一段代码需要同步执行
this 指向当前实例对象的引用
throw 抛出一个异常
throws 声明在当前定义的成员方法中所有需要抛出的异常
transient 声明不用序列化的成员域
try 尝试一个可能抛出异常的程序块
void 声明当前成员方法没有返回值
volatile 表明两个或者多个变量必须同步地发生变化
while 用在循环结构中

数据类型

Java是一种强类型语言,每个变量都必须声明其类型。

强弱类型语言:

强类型语言:也称为强类型定义语言。要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。也就是说,一旦一个变量被指定了某个数据类型,如果不经过转换,那么它就永远是这个数据类型了。安全性高,运行效率相对较慢,鱼和熊掌不可兼得!Java、.NET、C++等都是强制类型定义的。

弱类型语言:也称为弱类型定义语言。与强类型定义相反。像vb,php等就属于弱类型语言· 在VBScript中,可以将字符串‘12’和整数3进行连接得到字符串‘123’,也可以把它看成整数123,而不需要显示转换。

Java的数据类型分为两大类:基本类型(primitive type)和引用类型 (reference type)

基本数据类型:

数值类型:

整数类型:

​ byte占1个字节 范围:-128-127

​ short占2个字节 范围:-32768-32767

​ int占4个字节 范围:-2147483648-2147483647

​ long占8个字节 范围:-9223372036854775808-9223372036854775807

浮点类型:

​ float占4个字节

​ double占8个字节

字符类型:

​ char占2个字节

boolean类型:

​ 占一位只有true或者false两个

引用类型:

​ 类,接口,数组

注意:

字符串String类型也是一个类也属于引用类型。引用类型的大小统一为4个字节记录其引用对象的地址。java语言的整数类型默认为int浮点类型默认double。

浮点数使用总结:

  1. 默认是double。

  2. 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

  3. 避免比较中使用浮点数。

类型转换

由于Java是强类型语言,所以要进行有些运算的时候的,需要用到类型转换。

数据类型转换必须满足如下规则:

  • 不能对boolean类型进行类型转换。

  • 不能把对象类型转换成不相关类的对象。

  • 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。

  • 转换过程中可能导致溢出或损失精度,例如:

    int i =128; 
    byte b = (byte)i;
    

    因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

  • 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入。

    (int)23.7 == 23; 
    (int)-45.89f == -45
    

    自动类型转换

    自动类型转换:容量小的数据类型可以自动转换为容量大的数据类型。

    例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

强制类型转换

​ 强制类型转换的语法格式: (type)var ,运算符“()”中的type表示将值var想要转换成的目标数据类型。 条件是转换的数据类型必须是 兼容的。

注意:当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值,溢出。

变量

变量是什么:就是可以变化的量!

我们通过变量来操纵存储空间中的数据,变量就是指代这个存储空间!空间位置是确定的,但是里面放置什么值不确定!

这就好像我们家里有一个大衣柜,里面有十分多的小格子,我们给格子上贴上标签,放衣服,放鞋子,放手表等等,此时我们知道了哪里该放什么,但是,我们并不知道里面到底放的是什么牌子的鞋子,是衣服还是裤子。那个标签就相当于我们的变量,我们给他起了个名字,但是里面要放什么需要我们自己去放。

Java是一种强类型语言,每个变量都必须声明其类型。

注意事项:

  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。

  • 变量名必须是合法的标识符。

  • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。

变量作用域

变量根据作用域可划分为三种:

  • 类变量(静态变量: static variable):独立于方法之外的变量,用 static 修饰。

  • 实例变量(成员变量:member variable):独立于方法之外的变量,不过没有 static 修饰。

  • 局部变量(lacal variable):类的方法中的变量。在使用前必须先声明和初始化(赋初值)。局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

常量

常量(Constant):初始化(initialize)后不能再改变值!不会变动的值。常量名一般使用大写字符。

注意命名规范:

  1. 所有变量、方法、类名:见名知意

  2. 类成员变量:首字母小写和驼峰原则 : monthSalary

  3. 局部变量:首字母小写和驼峰原则

  4. 常量:大写字母和下划线:MAX_VALUE

  5. 类名:首字母大写和驼峰原则: Man, GoodMan

  6. 方法名:首字母小写和驼峰原则: run(), runRun()

运算符

Java 语言支持如下运算符:

  • 算术运算符: +,-,*,/,%,++,--

  • 赋值运算符 =

  • 关系运算符: >,<,>=,<=,==,!= instanceof

  • 逻辑运算符: &&,||,!

  • 位运算符: &,|,^,~ , >>,<<,>>>

  • 条件运算符 ?:

  • 扩展赋值运算符:+=,-=,*=,/=

注意:

在整数运算中:如果两个操作数有一个为Long, 则结果也为long没有long时,结果为int。即使操作数全为shot,byte,结果也是int。

在浮点数运算中:如果两个操作数有一个为double, 则结果为double.只有两个操作数都是float, 则结果才为float。

在取模运算中:负数%负数=负数;负数%正数=负数;正数%负数=正数;

自增自减运算中:

public static void main(String[] args) { 
	int a = 3; int b = a++; //执行完后,b=3。先给b赋值,再自增。 
	int c = ++a; //执行完后,c=5。先自增,再给b赋值 
}

在逻辑运算中:逻辑与和逻辑或采用短路的方式(&& ||)。从左到右计算,如果确定值则不会再计算下去。在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

逻辑与(&&)只要有一个为false, 则直接返回false。

逻辑或(||)只要有一个为true, 则直接返回true。

在位运算中:右移一位相当于除2取商。左移一位相当于乘2。

在字符串连接运算中:“+” 运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。

在三目条件运算中:x ? y : z 其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。

包机制

存在这样一个问题:当定义了多个类的时候,可能会发生类名的重复问题。

解决方式:在java中采用包机制处理开发者定义的类名冲突问题。

就好比我们平时的用电脑,一个文件夹下不能存在同名的文件,我们要是有这样的需求,但是又不想换名字,我们就可以考虑使用新建一个文件夹来存放!在我们的Java中也是这样的。

为了能够使用某一个包的成员,我们需要在 Java 程序中明确导入该包。使用 "import" 语句可完成此功能。

posted @   卬啵哩啵bo  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示