Java语法掌握:打好编程基础的关键(一)

简介: Java语法掌握:打好编程基础的关键

命名规范

代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
正例:name / sex / age
反例:*name / _sex / $age

代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。

正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式

也要避免采用。

正例:alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。
反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3

类名使用 UpperCamelCase风格。

但以下情形例外:BO/DTO/VO/AO/PO/UID等。

正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion

方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。
正例: localValue / getHttpMessage / inputUserId
反例:local_value / localvalue

常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
正例:UNIVERSITY_OF_CODE
反例:UNI_OF_CODE

抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。
正例:BaseService / NameEmptyException / UserServiceTest

类型与中括号紧挨相连来表示数组。
正例:定义整形数组 int[] arrayDemo;
反例:在 main 参数中,使用 String args[]来定义。

POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误。
正例:success
反例:is_success

包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
正例:应用工具类包名为 com.alibaba.ai.util、类名为 MessageUtils(此规则参考 Spring 的框架结构)

杜绝完全不规范的缩写,避免望文不知义。
正例:BaseService / NameEmptyException / UserServiceTest
反例:BaseS / NEException / USTest

注释

行内注释

// 单行注释

多行注释

/*
    这是多行注释
*/

类注释

类注释必须放在 import 语句之后,类定义之前。

标记由 @开始, 如 @author或 @param。

package test;
import java.util.Random;
/**
 * @author XUEW
 */
public class RandomTest {
}

方法注释

每一个方法注释必须放在所描述的方法之前。

/**
 * 这是hello方法
 * @param name 名字
 * @return 打招呼
 */
public String hello(String name) {
    return "Hello" + name;
}

标记

类注释和方法注释上均可以使用标记进行文档的详细描述,之后方便生成 Java Doc。

通用标记:既可以声明在类注释,也可以声明在方法注释。
标记 描述
@author 作者,这个标记将产生一个 author(作者)条目。可以使用多个 @author 标记,每个标记对应一个作者。
@version 版本,这个标记将产生一个 version(版本)条目。这里的文本可以是对当前版本的任何描述。
@since 始于,这个标记将产生一个 since(始于)条目。这里的 text 可以是对引入特性的版本描述。例如:@since version 1.7.10
@deprecated 过时,这个标记将对类、方法或变量添加一个不再使用的注释。文本中给出了取代的建议。
@see 超链接,这个标记将在 see 后面部分增加一个超级链接。它可以用于类中,也可以用于方法中。例如:@see world.xuewei.entity.Employee#raiseSalary(double)
@date 创建日期,例如:@date 2022-01-01 12:30
方法标记:声明在方法注释上
标记 描述
@param 变量描述,这个标记将对当前方法的 param(参数)部分添加一个条目。这个描述可以占据多行,并可以使用 HTML标记。一个方法的所有 @param标记必须放在一起。
@return 返回,这个标记将对当前方法添加 return(返回)部分。这个描述可以跨越多行,并可以使用 HTML 标记。
@throws 异常,这个标记将添加一个注释,用于表示这个方法有可能抛出异常。

基本数据类型

Java 是一种强类型语言,定义一个变量就需要声明一个类型。

Java有一个能够表示任意精度的算术包,通常称为“大数值”(big number)。虽然被称为大数值,但它并不是一种新的 Java 类型,而是一个 Java 对象。

1个字节(Byte)= 8 比特位(Bit)

4 种整型

由于 Java 程序必须保证在所有机器上都能够得到相同的运行结果, 所以各种数据类型的取值范围必须固定。

在通常情况下,int 类型最常用。但如果表示星球上的居住人数,就需要使用 long 类型了。byte 和 short类型主要用于特定的应用场合,例如,底层的文件处理或者需要控制占用存储空间量的大数组。

长整型数值有一个后缀L或l,如4000000000L。

2 种浮点型

除了 float 和 double,还有三个特殊的浮点数值,用来表示溢出和出错的情况。

  1. 正无穷大 Double.POSITIVE_INFINITY
  2. 负无穷大 Double.NEGATIVE_INFINITY
  3. NaN(不是一个数字)Double.NaN

例如:正数 / 0 = 正无穷大,0 / 0 = NaN

判断数字是否为无穷大小 d.isInfinite()

判断数字是否为数字 d.isNaN()

绝大部分应用程序都采用 double 类型,但是浮点数值不适用于无法接受舍入误差的金融计算中。2.0 - 1.1 = 0.89999999999…,这种舍入误差原因是浮点数系统使用二进制来表示,但是二进制系统无法精确的表示分数。比如三分之一就没法用二进制表示。

1 种字符型

**char 类型的字面量值要用单引号括起来,只需要 1 个字节。**例如:‘A’ 是编码值为 65 所对应的字符常量。它与 "A"不同,"A"是包含一个字符 A 的字符串。

char 类型的值可以表示为十六进制值。其范围从 \u0000 到 \uffff,特殊字符的转义序列如下。

注意:当心注释中的\u片段,可能会报语法错误

比如下面的注释就会报错

public static void main(String[] args) {
  // 目标地址 c:\user\home
  System.out.println("Hello World");
}

1 种真值型

boolean(布尔)类型有两个值:false 和 true,用来判定逻辑条件。

关于布尔类型的存储字节数,网上大概有三种说法:

1个比特

理由是 boolean 类型的值只有 true 和 false 两种逻辑值,在编译后会使用 1 和 0 来表示,这两个数在内存中只需要 1 位(bit)即可存储,位是计算机最小的存储单位,八分之一个字节。

1个字节

理由是虽然编译后 1 和 0 只需占用 1 位空间,但计算机处理数据的最小单位是 1 个字节,1 个字节等于 8 位,实际存储的空间是:用 1 个字节的最低位存储,其他 7 位用 0 填补,如果值是 true 的话则存储的二进制为:0000 0001,如果是 false 的话则存储的二进制为:0000 0000。

4个字节

理由来源是《Java虚拟机规范》一书中的描述:“虽然定义了 boolean 这种数据类型,但是只对它提供了非常有限的支持。在 Java 虚拟机中没有任何供 boolean 值专用的字节码指令,Java 语言表达式所操作的 boolean 值,在编译之后都使用 Java 虚拟机中的 int 数据类型来代替,而 boolean 数组将会被编码成 Java 虚拟机的 byte 数组,每个元素 boolean 元素占 8 位”。这样我们可以得出 boolean 类型单独使用是 4 个字节,在数组中又是 1 个字节

变量转换

隐式转换

两个数值进行二元操作时(例如 n + f,n 是整数,f 是浮点数),先要将两个操作数转换为同一种类型,然后再进行计算。

  • 如果两个操作数中有一个是 double 类型,另一个操作数就会转换为 double 类型。
  • 如果其中一个操作数是 float 类型,另一个操作数将会转换为 float 类型。
  • 如果其中一个操作数是 long 类型,另一个操作数将会转换为 long 类型。
  • 否则,两个操作数都将被转换为 int 类型。

强制转换

在必要的时候,int 类型的值将会自动地转换为 double 类型。但另一方面,有时也需要将 double 转换成 int。在 Java 中,允许进行这种数值之间的类型转换。

当然,有可能会丢失一些信息。在这种情况下,需要通过强制类型转换(cast)实现这个操作。

强制类型转换的语法格式是在圆括号中给出想要转换的目标类型,后面紧跟待转换的变量名。

double x = 9.997;
int nx = (int)x;

上面这种情况会丢失精度,所以注意不要将大范围类型的数据转为小范围类型的数据。


Java语法掌握:打好编程基础的关键(二)https://developer.aliyun.com/article/1480872

相关文章
|
1天前
|
Java 开发者
Java中的多线程编程:理解、实现与性能优化
【5月更文挑战第25天】 在Java中,多线程编程是实现并发执行任务的关键手段。本文将深入探讨Java多线程的核心概念,包括线程的创建、生命周期、同步机制以及高级特性。我们将通过实例演示如何有效地创建和管理线程,同时着重分析多线程环境下的性能调优策略和常见问题解决方法。文章旨在为读者提供一个全面的视角,帮助其掌握Java多线程编程的技巧,并在实际开发中避免潜在的并发问题,提升程序的性能和稳定性。
|
1天前
|
安全 Java 测试技术
Java并发编程:理解线程同步和锁
【5月更文挑战第25天】本文深入探讨了Java并发编程的核心概念,即线程同步和锁。通过详细解释这两种机制,我们能够理解它们如何帮助解决多线程环境中的竞态条件问题。此外,文章还提供了一些示例代码,以展示如何在Java中使用这些技术。
|
1天前
|
安全 算法 Java
Java并发编程的探索与实践
【5月更文挑战第25天】随着多核处理器的普及,并发编程变得越来越重要。Java语言提供了丰富的并发编程工具,本文将介绍Java并发编程的基本概念、原理以及实践经验,帮助读者更好地理解和应用Java并发编程。
|
1天前
|
安全 Java
Java中的多线程编程:从理论到实践
【5月更文挑战第25天】本文将深入探讨Java中的多线程编程,从基础理论到实际应用,为读者提供全面的理解和实践指导。我们将首先介绍多线程的基本概念和重要性,然后详细解析Java中实现多线程的两种主要方式:继承Thread类和实现Runnable接口。接着,我们将探讨如何在多线程环境中处理共享资源,以及如何利用Java的并发工具来管理线程。最后,我们将通过一个实际的例子来演示如何在实际开发中使用多线程。
|
1天前
|
Java 调度
Java并发编程:深入理解线程池
【5月更文挑战第25天】在Java中,线程池是一种管理线程的高效方式,它可以提高系统性能并降低资源消耗。本文将深入探讨Java线程池的原理、使用及优化方法,帮助读者更好地理解和应用线程池技术。
|
1天前
|
Java 开发者
探索Java并发编程:Fork/Join框架的深度解析
【5月更文挑战第25天】在多核处理器日益普及的今天,并发编程成为了提升应用性能的关键。Java语言提供了多种并发工具,其中Fork/Join框架是一个高效且强大的工具,用于处理分而治之的任务。本文将深入探讨Fork/Join框架的原理、使用及其在实际应用中的优化策略,旨在帮助开发者更好地利用这一框架以解决复杂的并发问题。
|
1天前
|
安全 Java
Java并发编程中的锁优化策略
【5月更文挑战第25天】在Java并发编程中,锁是实现线程同步的关键。然而,锁的使用可能导致性能下降,尤其是在高并发场景下。为了提高程序的执行效率,本文将探讨几种常用的锁优化策略,包括自旋锁、适应性锁和锁粗化等技术。通过这些优化策略,我们可以在保证线程安全的同时,提高程序的运行效率。
11 3
|
2天前
|
存储 Java 开发者
探索Java编程的奥秘:从入门到实践
本文是关于Java编程的简介,首先介绍了Java作为广泛应用的编程语言对初学者和专业人士的吸引力。接着,讲解了Java的基础概念,包括数据类型(如基本和引用类型)和变量,以及运算符和表达式。文章还提到了控制流语句,如条件语句和循环语句,用于控制程序执行流程。然后,转向面向对象编程,阐述了类与对象的概念,以及封装和继承的重要性。最后,简述了Java在Web开发、移动应用和桌面应用等领域的实际应用,并给出一个使用Swing创建简单GUI的示例。
|
11天前
|
设计模式 算法 安全
Java多线程编程实战:从入门到精通
【4月更文挑战第30天】本文介绍了Java多线程编程的基础,包括线程概念、创建线程(继承`Thread`或实现`Runnable`)、线程生命周期。还讨论了线程同步与锁(同步代码块、`ReentrantLock`)、线程间通信(等待/通知、并发集合)以及实战技巧,如使用线程池、线程安全设计模式和避免死锁。性能优化方面,建议减少锁粒度和使用非阻塞算法。理解这些概念和技术对于编写高效、可靠的多线程程序至关重要。
|
11天前
|
Java API 调度
[AIGC] 深入理解Java并发编程:从入门到进阶
[AIGC] 深入理解Java并发编程:从入门到进阶