重温经典《Thinking in java》第四版之第二章 一切都是对象(十二)

简介: 重温经典《Thinking in java》第四版之第二章 一切都是对象(十二)

2.6到2.9小节主要介绍构建我们的完整的可以运行起来的Java程序的方法,以及我们的Java程序的结构和风格是如何的。主要还是将语法的问题,不是我们实践课的第一个hello world程序demo。


2.6.1 名字可见性主要讲的是如何给我们的Java类起名字,这里面有一个包的概念,即我的类属于哪个包名下面。包可以理解为文件目录,同一个文件目录下不能有相同的类名,这就保证了类以及类中的函数的使用冲突问题,计算另一个目录下有一样名字的类,使用起来也会标识清楚。比如a.b.c.User和a.b.d.User。当然名字要起的有意义,包名要体现组织架构和功能的含义,类名也要能有见名知意。这个在真实的项目实践或者产品开发中会有开发规范约束。

2.6.2 运用其他构件,就是使用其他的类,直接举例说明:

importjava.util.ArrayList;

可以翻译成中文就是引入java.util包下的ArrayList类。如果要使用java.util包下其他的类,一个个引进来比较麻烦,可以使用通配符import java.util.*;

2.6.3 static关键字主要介绍了static关键字的作用。在一个类中,被static关键字修饰的数据成员或者方法,该数据成员和方法不需要创建出对象就可以被使用。还有一种更好理解的描述是,被static关键字修饰的数据成员或者方法,它是不属于对象的,是属于类自身的。用两个术语来表达就是类成员和类方法。

classStaticTest { 
staticinti=47; 
}

直接通过StaticTest.i去使用i变量。而且StaticTest.i在存储区域里只存一份,哪怕new处理再多的对象,他们使用的i还是同一个i。比如:

StaticTestst1=newStaticTest(); 
StaticTestst2=newStaticTest();

st1.i 和st2.i 共享同一个i,他们的值时相同的,都是47。可以通过StaticTest.i++去改变i的值为48,st1.i 和st2.i也都变为了48。以后在业务开发中一些全局的常量或者字典值的属性有时候就是通过static修饰的,全局独家一份。

classIncrementable { 
staticvoidincrement() { StaticTest.i++; } 
} 
Incrementable.increment();

演示了一下被static修饰的方法的使用。当然也可以通过对象的方式去调用,如下:

Incrementablesf=newIncrementable(); 
sf.increment();

有了上面一些关键字的铺垫下面就进入到了我们的2.7 你的第一个Java程序。直接上代码:

// HelloDate.java importjava.util.*; 
publicclassHelloDate { 
publicstaticvoidmain(String[] args) { 
System.out.println("Hello, it’s: "); 
System.out.println(newDate()); 
    } 
}

这个代码可以直接运行的,如何运行?安装jvm,找个集成开发工具比如idea,或者像我们当初通过javac命令行编译运行的方式,这些工具自己学习吧。

// HelloDate.java 代表单行注释

import java.util.*;代表导入要是有的类

public class HelloDate 定义一个类

public static void main(String[] args)代表这个类可以被直接执行,main方法是程序执行的主方法。

System.out.println("Hello, it’s: "); 就是打印输出一串字符串

System.out.println(new Date()); 把new Date()日期对象作为参数,就是打印输出当前日期。

下面直接进入到2.8 注释和嵌入式文档,刚刚也提到了//代表单行注释,那么多行注释呢?

/* This is a comment

* that continues

* across lines

*/

通过/**/即可实现多行注释。

Javadoc是java提供的根据注释来生成文档的工具,这个工具在输出一个库或者api给第三方开发者的时候很有帮助。几乎每个开源的框架或者库都通过javadoc输出了文档供开发者使用。这里面涉及到一些标签和HTML标签的使用,一方面是为了说明类或者函数的信息,一方面是为了美观我们的文档。

@author author-information 作者信息

@version version-information版本信息

@param parameter-name 参数信息

@return description 返回值信息

@throws fully-qualified-class-name description 异常信息

还有很多,可以参考这块专门的手册,需要使用哪个,按照规范使用即可。还可以使用如下HTML的写法美化我们的文档:

/**

* You can <em>even</em> insert a list:

* <ol>

* <li> Item one

* <li> Item two

* <li> Item three

* </ol>

*/

下面给一个例子来说明注释的使用:

//: object/HelloDate.java importjava.util.*; 
/** The first Thinking in Java example program. * Displays a string and today’s date. * @author Bruce Eckel * @author www.MindView.net * @version 4.0 */publicclassHelloDate { 
/** Entry point to class & application. * @param args array of string arguments * @throws exceptions No exceptions thrown */publicstaticvoidmain(String[] args) { 
System.out.println("Hello, it’s: "); 
System.out.println(newDate()); 
    } 
}

/* Output: (55% match)

Hello, it’s:

Wed Oct 05 14:39:36 MDT 2005

*/

目录
相关文章
|
10天前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
14天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
35 17
|
13天前
|
存储 安全 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第22天】在Java的世界里,对象序列化和反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何在Java中实现对象的序列化与反序列化,并探讨其背后的原理。通过实际代码示例,我们将一步步展示如何将复杂数据结构转换为字节流,以及如何将这些字节流还原为Java对象。文章还将讨论在使用序列化时应注意的安全性问题,以确保你的应用程序既高效又安全。
|
23天前
|
存储 Java 数据管理
Java零基础-Java对象详解
【10月更文挑战第7天】Java零基础教学篇,手把手实践教学!
23 6
|
26天前
|
Oracle Java 关系型数据库
重新定义 Java 对象相等性
本文探讨了Java中的对象相等性问题,包括自反性、对称性、传递性和一致性等原则,并通过LaptopCharger类的例子展示了引用相等与内容相等的区别。文章还介绍了如何通过重写`equals`方法和使用`Comparator`接口来实现更复杂的相等度量,以满足特定的业务需求。
17 3
|
27天前
|
存储 Java
Java编程中的对象序列化与反序列化
【10月更文挑战第9天】在Java的世界里,对象序列化是连接数据持久化与网络通信的桥梁。本文将深入探讨Java对象序列化的机制、实践方法及反序列化过程,通过代码示例揭示其背后的原理。从基础概念到高级应用,我们将一步步揭开序列化技术的神秘面纱,让读者能够掌握这一强大工具,以应对数据存储和传输的挑战。
|
28天前
|
存储 Java 数据管理
Java零基础-Java对象详解
【10月更文挑战第3天】Java零基础教学篇,手把手实践教学!
12 1
|
1月前
|
Java 数据安全/隐私保护
java类和对象
java类和对象
23 5
|
13天前
|
存储 缓存 NoSQL
一篇搞懂!Java对象序列化与反序列化的底层逻辑
本文介绍了Java中的序列化与反序列化,包括基本概念、应用场景、实现方式及注意事项。序列化是将对象转换为字节流,便于存储和传输;反序列化则是将字节流还原为对象。文中详细讲解了实现序列化的步骤,以及常见的反序列化失败原因和最佳实践。通过实例和代码示例,帮助读者更好地理解和应用这一重要技术。
10 0
|
25天前
|
存储 前端开发 Java
你还没有对象吗?java带你创建一个吧
你还没有对象吗?java带你创建一个吧
11 0
下一篇
无影云桌面