当前位置: 首页 > news >正文

网站开发语言有php用php做的博客网站

网站开发语言有php,用php做的博客网站,wordpress情侣家园,怎挖掘网站关键词本文是我们名为“ 高级Java ”的学院课程的一部分。 本课程旨在帮助您最有效地使用Java。 它讨论了高级主题#xff0c;包括对象创建#xff0c;并发#xff0c;序列化#xff0c;反射等。 它将指导您完成Java掌握的过程#xff01; 在这里查看 #xff01; 目录 1.简… 本文是我们名为“ 高级Java ”的学院课程的一部分。 本课程旨在帮助您最有效地使用Java。 它讨论了高级主题包括对象创建并发序列化反射等。 它将指导您完成Java掌握的过程 在这里查看 目录 1.简介 2.实例构建 2.1。 隐式生成构造函数 2.2。 无参数的构造函数 2.3。 带参数的构造函数 2.4。 初始化块 2.5。 施工保证 2.6。 能见度 2.7。 垃圾收集 2.8。 终结者 3.静态初始化 4.施工模式 4.1。 辛格尔顿 4.2。 实用程序/助手类 4.3。 厂 4.4。 依赖注入 5.下载源代码 6.接下来 1.简介 根据TIOBE编程社区索引 Java编程语言起源于Sun Microsystems并于1995年发布是世界上使用最广泛的编程语言之一。 Java是一种通用编程语言。 它对软件开发人员的吸引力主要归功于其强大的库和运行时简单的语法丰富的受支持平台集一次编写随时随地运行– WORA和强大的社区。 在本教程中我们将介绍高级Java概念并假设我们的读者已经对该语言有所了解。 它绝不是完整的参考而是将Java技能提升到更高水平的详细指南。 在此过程中将有很多代码片段需要研究。 在有意义的地方将使用Java 7语法和Java 8语法来呈现相同的示例。 2.实例构建 Java是面向对象的语言因此创建新的类实例对象可能是其最重要的概念。 构造函数在新类实例初始化中起着核心作用而Java提供了一些定义它们的方法。 隐式生成构造函数 Java允许定义一个没有任何构造函数的类但这并不意味着该类将没有任何构造函数。 例如让我们考虑这个类 package com.javacodegeeks.advanced.construction;public class NoConstructor { } 该类没有构造函数但是Java编译器将隐式生成一个构造函数并且可以使用new关键字创建新的类实例。 final NoConstructor noConstructorInstance new NoConstructor();无参数的构造函数 没有参数的构造函数或no-arg构造函数是显式完成Java编译器工作的最简单方法。 package com.javacodegeeks.advanced.construction;public class NoArgConstructor {public NoArgConstructor() {// Constructor body here} } 使用new关键字创建类的新实例后将调用此构造函数。 final NoArgConstructor noArgConstructor new NoArgConstructor();带参数的构造函数 带参数的构造函数是参数化新类实例创建的最有趣最有用的方法。 下面的示例定义一个带有两个参数的构造函数。 package com.javacodegeeks.advanced.construction;public class ConstructorWithArguments {public ConstructorWithArguments(final String arg1,final String arg2) {// Constructor body here} } 在这种情况下当使用new关键字创建类实例时应同时提供两个构造函数参数。 final ConstructorWithArguments constructorWithArguments new ConstructorWithArguments( arg1, arg2 ); 有趣的是构造函数可以使用特殊的this关键字相互调用。 链式构造函数被认为是一种好习惯因为它可以减少代码重复并基本上导致具有单个初始化入口点。 例如让我们添加另一个仅带有一个参数的构造函数。 public ConstructorWithArguments(final String arg1) {this(arg1, null); }初始化块 Java还有另一种使用初始化块提供初始化逻辑的方法。 很少使用此功能但最好知道它的存在。 package com.javacodegeeks.advanced.construction;public class InitializationBlock {{// initialization code here} } 以某种方式初始化块可能被视为匿名的无参数构造函数。 特定的类可能具有多个初始化块并且将按照在代码中定义的顺序全部调用它们。 例如 package com.javacodegeeks.advanced.construction;public class InitializationBlocks {{// initialization code here}{// initialization code here}} 初始化块不能代替构造函数可以与它们一起使用。 但是要提到的一点很重要那就是初始化块总是在任何构造函数之前调用。 package com.javacodegeeks.advanced.construction;public class InitializationBlockAndConstructor {{// initialization code here}public InitializationBlockAndConstructor() {} }施工保证 Java提供了开发人员可能依赖的某些初始化保证。 未初始化的实例和类静态变量将自动初始化为其默认值。 类型 默认值 布尔值 假 字节 0 短 0 整型 0 长 0升 烧焦 \ u0000 浮动 0.0分 双 0.0天 对象参考 空值 表格1 让我们确认使用以下类作为简单示例 package com.javacodegeeks.advanced.construction;public class InitializationWithDefaults {private boolean booleanMember;private byte byteMember;private short shortMember;private int intMember;private long longMember;private char charMember;private float floatMember;private double doubleMember;private Object referenceMember;public InitializationWithDefaults() { System.out.println( booleanMember booleanMember );System.out.println( byteMember byteMember );System.out.println( shortMember shortMember );System.out.println( intMember intMember );System.out.println( longMember longMember );System.out.println( charMember Character.codePointAt( new char[] { charMember }, 0 ) );System.out.println( floatMember floatMember );System.out.println( doubleMember doubleMember );System.out.println( referenceMember referenceMember );} } 使用new关键字实例化后 final InitializationWithDefaults initializationWithDefaults new InitializationWithDefaults(), 以下输出将显示在控制台中 booleanMember false byteMember 0 shortMember 0 intMember 0 longMember 0 charMember 0 floatMember 0.0 doubleMember 0.0 referenceMember null能见度 构造函数服从Java可见性规则并且可以具有访问控制修饰符该修饰符确定其他类是否可以调用特定的构造函数。 修饰符 包 子类 其他所有人 上市 无障碍 无障碍 无障碍 受保护的 无障碍 无障碍 无法访问 无修饰符 无障碍 无法访问 无法访问 私人的 无法访问 无法访问 无法访问 表2 垃圾收集 Java尤其是JVM使用自动垃圾收集。 简而言之无论何时创建新对象都会自动为其分配内存。 因此只要不再引用这些对象它们就会被销毁并回收其内存。 Java垃圾回收是世代相传的并且基于以下假设大多数对象都死于年轻对象它们在创建后不久就不再被引用因此可以安全地销毁。 大多数开发人员过去认为Java中的对象创建速度很慢应尽可能避免实例化新对象。 实际上事实并非如此用Java创建对象非常便宜且快速。 但是昂贵的是不必要地创建了长期存在的对象这些对象最终可能会填满旧的对象并导致世界各地的垃圾回收。 终结者 到目前为止我们已经讨论了构造函数和对象初始化但实际上并没有提及任何与之对应的东西对象破坏。 这是因为Java使用垃圾回收来管理对象的生命周期垃圾回收器负责破坏不必要的对象并回收内存。 但是Java中有一个称为终结器的特殊功能该终结器有点类似于析构函数但具有执行资源清除的不同目的。 终结器被认为是一个危险的功能这会导致许多副作用和性能问题。 通常它们不是必需的应该避免使用非常罕见的情况大多数情况与本机对象有关。 终结器的更好替代方案是Java 7语言结构引入的称为try-with-resources和AutoCloseable接口该接口允许编写干净的代码如下所示 try ( final InputStream in Files.newInputStream( path ) ) {// code here }3.静态初始化 到目前为止我们已经研究了类实例的构造和初始化。 但是Java还支持称为静态初始值设定项的类级初始化构造。 除了附加的static关键字外它们与初始化块非常相似。 请注意每个类加载器仅执行一次静态初始化。 例如 package com.javacodegeeks.advanced.construction;public class StaticInitializationBlock {static {// static initialization code here} } 与初始化块类似您可以在类定义中包括任意数量的静态初始化器块它们将按照它们在代码中出现的顺序执行。 例如 package com.javacodegeeks.advanced.construction;public class StaticInitializationBlocks {static {// static initialization code here}static {// static initialization code here} } 因为可以从多个并行线程触发静态初始化块第一次执行类加载时所以Java运行时保证仅以线程安全的方式执行该初始化块。 4.施工模式 多年来Java社区中出现了一些易于理解且广泛适用的构造或创建模式。 我们将介绍其中最著名的单例助手工厂和依赖注入也称为控制反转。 辛格尔顿 Singleton是软件开发人员社区中最古老且有争议的模式之一。 基本上其主要思想是确保在任何给定时间只能创建该类的单个实例。 然而如此简单单例引发了很多有关如何使其正确尤其是线程安全的讨论。 这是朴素的单例类的样子 package com.javacodegeeks.advanced.construction.patterns;public class NaiveSingleton {private static NaiveSingleton instance;private NaiveSingleton() { }public static NaiveSingleton getInstance() {if( instance null ) {instance new NaiveSingleton();}return instance;} } 此代码的至少一个问题是如果由多个线程并发调用它可能会创建该类的许多实例。 正确设计单例但以非延迟方式的一种方法是使用类的static final属性。 final property of the class. package com.javacodegeeks.advanced.construction.patterns;public class EagerSingleton {private static final EagerSingleton instance new EagerSingleton();private EagerSingleton() { }public static EagerSingleton getInstance() {return instance;} } 如果您不想浪费资源并且希望在真正需要时懒散地创建单身人士则需要显式同步这有可能导致多线程环境中的并发性降低有关Java并发性的更多详细信息将在本文中讨论。本教程的第9部分 并发最佳实践 。 package com.javacodegeeks.advanced.construction.patterns;public class LazySingleton {private static LazySingleton instance;private LazySingleton() { }public static synchronized LazySingleton getInstance() {if( instance null ) {instance new LazySingleton();}return instance;} } 如今单例在大多数情况下都不被认为是一个不错的选择主要是因为单例使代码难以测试。 依赖项注入模式的主导请参见下面的“ 依赖项注入”部分也使单身人士不必要。 实用程序/助手类 实用程序或帮助程序类是许多Java开发人员使用的非常流行的模式。 基本上它代表了非实例化类与构造函数声明为private 可选声明为final 有关声明类的更多详细信息final将在本教程的第3部分提供 如何设计类和接口 包含static方法只要。 例如 package com.javacodegeeks.advanced.construction.patterns;public final class HelperClass {private HelperClass() { }public static void helperMethod1() {// Method body here}public static void helperMethod2() {// Method body here} } 从经验丰富的软件开发人员的角度来看这样的助手通常成为各种不相关方法的容器这些方法并未找到放置其他位置的方法但应以某种方式共享并由其他类使用。 在大多数情况下应避免此类设计决策始终可以找到另一种方法来重用所需的功能同时保持代码简洁明了。 厂 事实证明工厂模式在软件开发人员手中是极其有用的技术。 因此它具有Java的几种风格从工厂方法到抽象工厂 。 工厂模式的最简单示例是static方法该方法返回特定类的新实例 factory方法 。 例如 package com.javacodegeeks.advanced.construction.patterns;public class Book {private Book( final String title) {} public static Book newBook( final String title ) { return new Book( title );} } 有人可能会认为引入newBook 工厂方法没有多大意义但使用这种模式通常会使代码更具可读性。 工厂模式的另一个变化涉及接口或抽象类 抽象工厂 。 例如让我们定义一个工厂接口 public interface BookFactory {Book newBook(); } 根据库类型有几种不同的实现 public class Library implements BookFactory {Overridepublic Book newBook() {return new PaperBook();} }public class KindleLibrary implements BookFactory {Overridepublic Book newBook() {return new KindleBook();} } 现在 Book的特定类隐藏在BookFactory接口实现的后面仍然提供了创建书籍的通用方法。 依赖注入 依赖注入也称为控制反转被认为是类设计者的一种好习惯如果某个类实例依赖于其他类实例则应通过构造函数或setter策略为其提供注入那些依赖。等但不是由实例本身创建的。 让我们考虑以下示例 package com.javacodegeeks.advanced.construction.patterns;import java.text.DateFormat; import java.util.Date;public class Dependant {private final DateFormat format DateFormat.getDateInstance();public String format( final Date date ) {return format.format( date );} } Dependant类需要一个DateFormat实例并且仅在构造时通过调用DateFormat.getDateInstance()创建一个实例。 更好的设计是使用构造函数参数执行相同的操作 package com.javacodegeeks.advanced.construction.patterns;import java.text.DateFormat; import java.util.Date;public class Dependant {private final DateFormat format;public Dependant( final DateFormat format ) {this.format format;}public String format( final Date date ) {return format.format( date );} } 在这种情况下该类的所有依赖关系都是从外部提供的因此更改日期格式和编写测试用例非常容易。 5.下载源代码 您可以在此处下载源代码 com.javacodegeeks.advanced.java 6.接下来 在本教程的这一部分中我们研究了类和类实例的构造和初始化技术以及涵盖几种广泛使用的模式的方法。 在下一部分中我们将剖析Object类及其知名方法的用法 equals hashCode toString和clone 。 翻译自: https://www.javacodegeeks.com/2015/09/how-to-create-and-destroy-objects.html
http://www.zqtcl.cn/news/119254/

相关文章:

  • 重庆市网站备案材料做网站和做新媒体运营
  • 大岭山网站建设公司网站建设需要具备的能力
  • 网站建设接外包流程网上可以报警备案吗
  • 建筑网站接单WordPress文章数据转emlog
  • 海口网络平台网站开发wordpress on lnmp
  • 手机怎么登录自己做的网站免费注册域名网站知乎
  • 万宁市住房和城乡建设局网站网页游戏制作过程的
  • 网站建设批复意见浏览有关小城镇建设的网站 记录
  • 做国际贸易做什么网站遵义做网站优化
  • 电商平台正在建设中网站页面提示开发手机网站用什么好
  • 电商设计素材网站推荐百度云app下载安装
  • 网站怎样和首页做链接地址百度怎么打广告在首页
  • 眉县做网站网站开发技术可行性分析
  • 深圳求职网站哪个好网站上面的在线咨询是怎么做的
  • 做饰品一般用什么网站做首饰凡客数据
  • 工业电商做网站怎么样wordpress 韩国 主题
  • 网站的优化从几个方面网站建设需注意哪些事项
  • 网站建设的技术有哪些内容东莞网站建设最优
  • 网站建设税费很多网站没有后台
  • 百度云主机上装网站flash怎么做网页
  • 外贸网站能用阿里云吗哔哩哔哩网页版打不开
  • 南宁月嫂网站建设财经直播的网站开发一个多少钱
  • 宁波网站的建设百度网盟推广 网站
  • 大连城乡建设局网站青岛网站建设外贸
  • 石家庄网站建设招聘珠海快速网站建设
  • 网站建设代理ai制作网页
  • 微网站平台怎样做网站wordpress侧栏跟随
  • 手机网站建设好吗湖南省专业建设公司网站的机构
  • 网站代码 字体好用的cms网站
  • 美食网站首页设计用手机怎么看自己做的网站