Java基础

注释

写注释是一个非常好的习惯,可以让别人跟自己更好的理解自己的代码。

可以搜索”有趣的代码注释“来看一些神注释。

  • 单行注释

    • 用//标识单行注释

      //这是一行单行注释。
      
  • 多行注释

    • 用/**/来表示多行注释

      /* 
      这是一个多行注释
      这是一个多行注释
      这是一个多行注释
      */
      
  • 文档注释

    • 用/** */来标识文档注释可以用来加东西

      /**
      *@Description HelloWorld
      *@Author 沐辰
      */
      

标识符

Java所有的组成部分都需要名字、类名、变量以及方法名都被成为标识符。

  • 所有的标识符以字母、$、下划线(_)开始

  • 首字符后可以是字母、$、下划线或数字的任何字符组合

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

  • 标识符大小写敏感

  • 可以用汉字,但不推荐使用,也可以用拼音,不推荐。

    String $hello = "Hello World";
    String _hello = "Hello World";
    String hello = "Hello World";
    String Hello = "Hello World";
    

关键字

关键字 含义
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)算术规范
super 表明当前对象的父类型的引用或者父类型的构造方法
switch 分支语句结构的引导词
synchronized 表明一段代码需要同步执行
this 指向当前实例对象的引用
throw 抛出一个异常
throws 声明在当前定义的成员方法中所有需要抛出的异常
transient 声明不用序列化的成员域
try 尝试一个可能抛出异常的程序块
void 声明当前成员方法没有返回值
volatile 表明两个或者多个变量必须同步地发生变化
while 用在循环结构中

数据类型

  • 强类型语言

    • 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。
  • 弱类型语言,如JS。

  • Java的数据类型分为两大类

    • 基本类型
      • 数值类型
        • 整数类型:byte占1个字节,short占2个字节,int占4个字节,long占8个字节。
        • 浮点类型:float占4个字节,double占8个字节。
        • 字符类型:char占2个字节。
      • boolean类型:占1位,值只有true和false两个。
    public class demo2 {
        public static void main(String args[]){
            //八大基本类型。
    
            //整数
            int num1 = 10;//最常用
            byte num2 = 10;
            short num3 = 30;
            long num4 = 30L;//Long类型要在数字后面加L
    
            //小数:浮点数
            float num5 = 10.1F;//float类型要在数字后面加个F。
            double num6 = 123.213;
    
            //字符
            char name = 'A';
            //字符串,String不是关键字,是类。
            String name2 = "沐辰";
    
            //布尔值:是非
            boolean flag = true;
        }
    }
    
    • 引用类型:类、接口、数组。

数据类型拓展

  • 整数拓展

    • 进制:二进制0b,八进制0,十六进制0x
    	  int i = 10;
            int i2 = 010;
            int i3 = 0x10;
            System.out.println(i);
            System.out.println(i2);
            System.out.println(i3);
    
  • 浮点数拓展;如银行业务,钱。

    • float 有限 离散 舍入误差 大约 接近但不等

    • double

    • 最好完全避免浮点数进行比较

      float f = 0.1f;
      double f2 = 0.1;
      System.out.println(f==f2); //false;
      System.out.println(f);
      System.out.println(f2);
      
  • 字符拓展

    • 所有字符本质还是数字

    • Unicode编码表,每个字符都有对应的数字。U0000~UFFFF

      char c1 = 'a';
      char c2 = '中';
      System.out.println(c1);//a
      System.out.println((int)c1);//97
      System.out.println(c2);//中
      System.out.println((int)c2);//20013
      char c3 = '\u0061';
      System.out.println(c3); //a
      
  • 转义字符:制表符\t、换行符\n等。

  • 布尔值扩展

    Less is more

    下面的两个if是等效的。

    boolean flag = true;
    if(flag == true){}
    if (flag){}
    
  • 字符串扩展

    • ”==“比较的是字符串的地址,new String会开辟新的地址存储字符串,导致sa、sb的地址不同。
    • 字符串比较是否相同要用equal。
    String sa = new String("Hello World!");
    String sb = new String("Hello World!");
    System.out.println(sa == sb); //false
    String sc = "Hello World!";
    String sd = "Hello World!";
    System.out.println(sc == sd); //true
    

类型转换

JDK7的新特性,可以数字之间可以使用下划线分割:100_0000_0000。

  • 由于Java是强类型语言,所以进行某些运算的时候,会进行类型转换。字节大小从低到高。

    • byte,short,char->int->long->float->double
  • 运算过程中,不同类型的数据先转化为同一类型再进行运算。

  • 强制类型转换:(类型)变量名 高--低

  • 自动类型转换:自动进行 低--高

  • 注意:

    1. 不能对布尔类型进行转换。
    2. 不能把对象类型转换为不相干的类型。
    3. 高容量转换为低容量时,使用强制转换。
    4. 转换的时候可能会出现内存溢出或者精度问题。

变量

  • 变量就是可以变化的量
  • Java是强类型语言,每个变量都必须声明其类型。
  • Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
  • 注意事项:
    • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
    • 变量名必须是合法的标识符。
    • 变量声明是一条完整的语句,因此每一个声明都必须一分号结束。

变量作用域

  • 类变量:static。
  • 实例变量:从属于对象,如果不进行初始化,这个类型的默认值 0、0.0;布尔值默认false;出了基本类型,其余都是null。
  • 局部变量:必须声明和初始化值。

常量

  • 常量:初始化后不能再改变值,不会变动的值。

  • 可以理解为特殊的变量,在程序运行过程中不允许被改变。

  • 定义方法:

    final 常量名 = 值;
    final double PI = 3.14;
    
  • 常量名一般使用大写字符。

变量的命名规范

  • 所有的变量、方法、类名:见名知意。
  • 类成员变量:首字母小写和驼峰原则,即小驼峰,除了第一个单词以外,后面的单词首字母大写。
  • 局部变量:小驼峰原则。
  • 常量:大写字母和下划线:MAX_VALUE。
  • 类名:首字母大写和驼峰原则,即大驼峰。
  • 方法名:小驼峰原则。

包机制

包的本质是文件夹。

  • 为了更好地组织类,Java提供了包机制,用于区别类名和命名空间。

  • 包语句的语法格式为:

    package pkg1[. pkg2[. pkg3...]];
    
  • 一般使用公司域名的倒置作为包名

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

    import pkg1[. pkg2[. pkg3...]].(classname|*)
    

JavaDoc文档生成

  • javadoc命令是用来自己生成API文档的。
  • 参数信息:
标签 说明 JDK 1.1 doclet 标准doclet 标签类型
@author 作者 作者标识 包、 类、接口
@version 版本号 版本号 包、 类、接口
@param 参数名 描述 方法的入参名及描述信息,如入参有特别要求,可在此注释。 构造函数、 方法
@return 描述 对函数返回值的注释 方法
@deprecated 过期文本 标识随着程序版本的提升,当前API已经过期,仅为了保证兼容性依然存在,以此告之开发者不应再用这个API。 包、类、接口、值域、构造函数、 方法
@throws异常类名 构造函数或方法所会抛出的异常。 构造函数、 方法
@exception 异常类名 同@throws。 构造函数、 方法
@see 引用 查看相关内容,如类、方法、变量等。 包、类、接口、值域、构造函数、 方法
@since 描述文本 API在什么程序的什么版本后开发支持。 包、类、接口、值域、构造函数、 方法
链接到某个特定的成员对应的文档中。 包、类、接口、值域、构造函数、 方法
当对常量进行注释时,如果想将其值包含在文档中,则通过该标签来引用常量的值。 √(JDK1.4) 静态值域

Dos命令生成注释文档

在代码中写完文档注释之后,可以通过Dos命令,在当前文件夹下生成对应的JavaDoc文档。

命令为:javadoc [选项] [软件包名称] [源文件]

例如:javadoc -encoding UTF-8 -charset UTF-8 Doc.java

IDEA生成注释文档

Tools -> Generate JavaDoc -> 选择要生成的包、选项 -> 生成

注意:

  • 路径中不可以有中文,否则报错。
  • Local可以填写语言,zh_CN问中文。
  • Local下面的Other...可以填入其他选项,如:-encoding UTF-8 -charset UTF-8 。

各种编码规范推荐阅读《阿里巴巴Java开发手册》
《阿里巴巴Java开发手册》下载

posted @   洛沐辰  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示