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

相关文章
|
21天前
|
Java 程序员
Java编程中的异常处理:从基础到高级
在Java的世界中,异常处理是代码健壮性的守护神。本文将带你从异常的基本概念出发,逐步深入到高级用法,探索如何优雅地处理程序中的错误和异常情况。通过实际案例,我们将一起学习如何编写更可靠、更易于维护的Java代码。准备好了吗?让我们一起踏上这段旅程,解锁Java异常处理的秘密!
|
1天前
|
存储 缓存 Java
Java 并发编程——volatile 关键字解析
本文介绍了Java线程中的`volatile`关键字及其与`synchronized`锁的区别。`volatile`保证了变量的可见性和一定的有序性,但不能保证原子性。它通过内存屏障实现,避免指令重排序,确保线程间数据一致。相比`synchronized`,`volatile`性能更优,适用于简单状态标记和某些特定场景,如单例模式中的双重检查锁定。文中还解释了Java内存模型的基本概念,包括主内存、工作内存及并发编程中的原子性、可见性和有序性。
Java 并发编程——volatile 关键字解析
|
5天前
|
算法 Java 调度
java并发编程中Monitor里的waitSet和EntryList都是做什么的
在Java并发编程中,Monitor内部包含两个重要队列:等待集(Wait Set)和入口列表(Entry List)。Wait Set用于线程的条件等待和协作,线程调用`wait()`后进入此集合,通过`notify()`或`notifyAll()`唤醒。Entry List则管理锁的竞争,未能获取锁的线程在此排队,等待锁释放后重新竞争。理解两者区别有助于设计高效的多线程程序。 - **Wait Set**:线程调用`wait()`后进入,等待条件满足被唤醒,需重新竞争锁。 - **Entry List**:多个线程竞争锁时,未获锁的线程在此排队,等待锁释放后获取锁继续执行。
32 12
|
2天前
|
存储 安全 Java
Java多线程编程秘籍:各种方案一网打尽,不要错过!
Java 中实现多线程的方式主要有四种:继承 Thread 类、实现 Runnable 接口、实现 Callable 接口和使用线程池。每种方式各有优缺点,适用于不同的场景。继承 Thread 类最简单,实现 Runnable 接口更灵活,Callable 接口支持返回结果,线程池则便于管理和复用线程。实际应用中可根据需求选择合适的方式。此外,还介绍了多线程相关的常见面试问题及答案,涵盖线程概念、线程安全、线程池等知识点。
16 2
|
18天前
|
安全 算法 Java
Java多线程编程中的陷阱与最佳实践####
本文探讨了Java多线程编程中常见的陷阱,并介绍了如何通过最佳实践来避免这些问题。我们将从基础概念入手,逐步深入到具体的代码示例,帮助开发者更好地理解和应用多线程技术。无论是初学者还是有经验的开发者,都能从中获得有价值的见解和建议。 ####
|
18天前
|
Java 调度
Java中的多线程编程与并发控制
本文深入探讨了Java编程语言中多线程编程的基础知识和并发控制机制。文章首先介绍了多线程的基本概念,包括线程的定义、生命周期以及在Java中创建和管理线程的方法。接着,详细讲解了Java提供的同步机制,如synchronized关键字、wait()和notify()方法等,以及如何通过这些机制实现线程间的协调与通信。最后,本文还讨论了一些常见的并发问题,例如死锁、竞态条件等,并提供了相应的解决策略。
42 3
|
24天前
|
开发框架 安全 Java
Java 反射机制:动态编程的强大利器
Java反射机制允许程序在运行时检查类、接口、字段和方法的信息,并能操作对象。它提供了一种动态编程的方式,使得代码更加灵活,能够适应未知的或变化的需求,是开发框架和库的重要工具。
37 2
|
1月前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
1月前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
37 1
|
1月前
|
Java 数据处理 开发者
Java多线程编程的艺术:从入门到精通####
【10月更文挑战第21天】 本文将深入探讨Java多线程编程的核心概念,通过生动实例和实用技巧,引导读者从基础认知迈向高效并发编程的殿堂。我们将一起揭开线程管理的神秘面纱,掌握同步机制的精髓,并学习如何在实际项目中灵活运用这些知识,以提升应用性能与响应速度。 ####
49 3