浅谈Java编码规范

本文详细介绍了Java编程规范,包括大小写规则、语句结构、标识符的命名规则,以及阿里编码规约。同时讲解了标识符的组成、命名限制,强调了有意义的命名。此外,还涉及Java的关键字、变量的声明和数据类型转换。内容涵盖基本数据类型的取值范围、默认值以及转换注意事项。最后,文章提及了数据类型转换的自动和强制转换原则。
摘要由CSDN通过智能技术生成

DAY_02

1 Java的编码规范

  1. 严格区分大小写
  2. 一条语句以分号;结尾
  3. 一个语句块
  4. Java中允许包括任意的换行和空格
  5. 编写代码,先分析(采用什么语句语法需要什么格式),再写结构(写出大致框架,为防止括号不匹配问题),填充内容(填充条件内容)
  6. 任何编程语言标点符号都是英文(半角)

2标识符

概念:标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。简单来说就是给包、类、变量、方法命名的规则
    
规则:
    1.不能以数字开头
    2.由美元符号$、大小写字母a-z A-Z、下划线_、普通数字0-9组成
    3.严格区分大小写
    4.不能和关键字重合(Java中有50个关键字,关键字就是赋予固定特殊含义的小写单词)
    5.不能和JDK中已经存在类或者接口重名(SystemMathRandomScannerStringArrays等很多,后续在编程中注意)
    6.ture、falsenull不是关键字,也不能作为标识符
    7.应该使用有意义的名称,达到见名知意的目的

3阿里编程规约

3.1命名规约

1.代码中的命名均不能以下划线_或者美元符号$考试,也不能以下划线_或者美元符号$结束。下图可以看到使用阿里规约扫描时提示命名不能以_或$开始
2.包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一有且仅有一个自然语义的单词。包名统一使用单数形式。但是类名如果有复数含义,类名可以使用复数形式。如下图所示
    补充:类名,接口名统一使用【大驼峰命名法】
3.方法名、参数名、成员变量、局部变量都统一使用第一个首字母大写其他单词首字母大写风格【小驼峰命名法】
 正例: localValue / getHttpMessage() / inputUserId
    
4.常量名全部大写,单词间用下划线隔开,力求语义表达完整清楚不要嫌名字长
正例: MAX_STOCK_COUNT //最大库存量

反例: MAX_COUNT 
5.类型与中括号紧挨相连来表示数组
    数据类型 [] 数组名称
正例:   int [] arr

6.  抽象类命名使用 AbstractBase 开头;
    异常类名使用Exception结尾;
    测试类命名以它要测试的类的名称开始,以Test结尾,         UserDAO类创建测试类;如 UserDAOTest

4Java50个关键字

abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgo toifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

​ Java关键字

基本数据类型(8个)

整型:byte(1字节) shrot(2字节) int4字节) long(8字节)
浮点型:float(4字节) double(8字节)
布尔型:boolean(falise/ture 理论上占用1bit,1/8字节,实际处理按1byte处理)
字符型:char(2字节)

和包相关(2个)

声明包:package
导包 :import    

访问控制修饰符(3个)

公有的:public             同一个项目中都可以访问
受保护的:protected        同一个包+不同包的子类
对象可以访问
 默认不写 static void 方法名() 同一个包中可以访问
 私有的:private               本类中可以访问
image-20210702185914508

流程控制(10个)

分支语句:if else  switch case default
循环语句: while do for 
结束语句: break continue

保留字(2个)

goto  const

异常(5个)

捕获异常: try catch  finally
    结论:分有return和没有return的情况讨论
        无return:没有抛出异常的时候会执行try不会执行catch,而finally无论如何都要执行;抛出异常的时候,程序会尝试捕捉异常Exception,捕捉成功不会再尝试捕捉其他异常,直接执行finally,执行后面的程序.
            
抛出异常: throw throws
区别:throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,由方法的调用者来处理。
  用在方法声明后面,跟的是异常类名
  可以跟多个异常类名,用逗号隔开
  throws表示出现异常的一种可能性,并不一定会发生这些异常
  throw:则是用来抛出一个具体的异常类型。
  用在方法体内,跟的是异常对象名
  只能抛出一个异常对象名
  表示抛出异常,由方法体内的语句处理
  throw则是抛出了异常,执行throw则一定抛出了某种异常 

修饰符(6个)

static 静态     静态方法中不能直接访问非静态变量
classinterface 接口
enum   枚举类
final  最终的 一般用于定义常量
abstract 抽象的

和对象相关(4个)

new      新建一个对象
    use:类名 对象名 = new 类名()
this     当前类对象
    use:智能在方法内部使用,表示对"调用方法的那个对象"的引用
super    父类对象
instanceof  测试某个对象的数据类型

和方法相关的(2个)

void 返回值类型,没有返回结果
return 返回一个具体的值 //返回结果的值和定义的数据类型一致

类与类、类与接口之间的关系(2个)

 extends   java中是单继承 一个子类只有一个父类
 implements  多实现

其他(6个)

synchronized   同步锁、多线程
assert         断言,用来进行程序调试
native         用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
strictfp       用来声明FP_strict(单精度或双精度浮点数)
transient      对象序列化时,若某个属性不能被序列化使用 static 或者 transient
volatile	   表明两个或者多个变量必须同步地发生变化 多线程

5 变量

概念

计算机语言中能储存计算结果或能表示值的抽象概念。
变量可以通过变量名访问。
变量通常是可变的
变量名在有效的范围内必须是唯一的

声明

格式: 数据类型 变量名 = 值;

分类

成员变量(全局变量)局部变量
定义的位置类里面,方法外面方法中,注意方法的参数也是局部变量
作用域整个类中方法中
初始值java系统会提供默认值必须手动赋值才可以使用
内存位置堆,和对象的生命周期一致栈、和方法的生命周期一致

具体如下图所示

Java提供的默认值

整型:byte short Int long 0
浮点型: float double 0.0
布尔型: Boolean false
字符型:char \u0000(空格)
引用数据类型 null

使用细节

细节1:在同一个范围内变量名唯一

细节2:java是强类型的语句,必须指明变量的数据类型

细节3:变量定义的值必须和数据类型匹配

细节4:局部变量必须赋值才能使用

6基本数据类型

整型 byte short int long

数据类型字节个数取值范围默认值封装类
byte1 (8位)-27~27-10Byte
short2(16位)-2^15 ~ 2^15 -10Short
int4(32位)-2^31 ~ 2^31 -10Integer
long8(64位)-2^63~ 2^63 -10Long

细节1:赋值的时候不要超过值范围

细节2:声明long类型的时候超过Int的取值范围则必须添加L或者l

细节3:值超过long的范围时使用Big Integer大数据方法解决

细节4:java中规定,低于int类型的数据类型在进行运算的时候都会自动转换成int类型再进行运算

浮点型 float double

数据类型字节个数取值范围精度问题默认值
float 单精度浮点类型4(32位)1.4E-45 ~ 3.4028235E38小数点后保留7位0.0f
double 双精度浮点类型8(64位)4.9E-324 ~ 1.7976931348623157E308小数点后保留15位0.0
  • 声明float类型变量需要注意

    float a = 3.5f; // 明float类型变量需要在值的后面添加f或者F
    
  • int 和 float 哪个大? float大

    Float.MAX_VALUE > Integer.MAX_VALUE    true
    原因:  intfloat  都是4个字节,32位,每一位表示的含义不同
        int类型首位为符号位,0表示正数、1表示负数
        但在计算机中负数存储的是补码,不是原码。补码=反码(原码的第一个符号位不变,其他取反得到反码)+1,使用补码运算后可以让符号位直接参与运算,这就是使用补码的好处。所以int的有效位数加起来是32float类型包含了1位符号位,8位阶码和23位尾数,folat的有效位是尾数加一也就是24位,但int有效位是32位。
      float实际有效位会比int少在互相转换的过程中会出现一定的精度损失问题,简但来说当一个int型数字转成float后可能就不再是原本的数字,损失了一定的精度
      double的存储规则跟float相似,double包含1个符号位,11个阶码位和52个尾数位,所以double的有效位是53位可以完整保留int
    
  • float和double运算时会有精度丢失

  • Float 和 Double 封装类

布尔类型 boolean

数据类型字节个数取值范围默认值编码格式
boolean1字节(1位)true falsefalseunicode编码
   int age=20;
   if(age>=18){
      
   }

字符型 char

数据类型字节个数取值范围默认值
char2字节(16位)\u0000 ~ \uffff\u0000
  • 如何声明字符类型的变量?

  • ASCII码

  • 转义字符

    转义字符含义
    \n换行
    \ttab 4个空格
    \"输出"
    \’输出’
    \b退格
    \\\
    \r将鼠标移动到下一行的开头位置

7 数据类型转换

自动类型转换(小 -> 大)

小类型向大类型的转换JVM会自动完成,不需要编写额外的代码

强制类型转换(大 -> 小)

大类型向小类型的转换需要编写额外代码进行强制类型转换

| \ |
| \r | 将鼠标移动到下一行的开头位置 |

7 数据类型转换

自动类型转换(小 -> 大)

小类型向大类型的转换JVM会自动完成,不需要编写额外的代码

强制类型转换(大 -> 小)

大类型向小类型的转换需要编写额外代码进行强制类型转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值