`
he_wen
  • 浏览: 239421 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java比较陌生的语法

    博客分类:
  • Java
阅读更多

一、      Java并没有虚构函数,但是有finalize()方法,它被声明为protected,finalize()会在对象被回收是执行,但不可以将它当做析构函数用,因为不知道对戏那个资源合适被回收,所以也不知道finalize()真正被执行的时间,也就无法立即执行所指定的资源回收动作。

    如果确定不再使用某个对象,可以在参考至该对象的名称上指定null,表示这个名称不再参考至任何对象,不被任何名称参考的对象将会被回收资源,可以使用System.gc()建议程序进行垃圾手机,如果建议被采纳,则对象资源会被回收,回收前执行finalize()方法。

下面是测试的源代码:

package com.hewen;

public class GcTest {
private String name;
public GcTest(String name){
	this.name=name;
	System.out.println(name+"建立");
}
//对象回收前执行
protected void finalize(){
	System.out.println(name+"被回收");
}
}

 

package com.hewen;

public class UseGc {
public static void main(String[] args){
	GcTest ob1=new GcTest("obj1");
	GcTest ob2=new GcTest("obj2");
	GcTest ob3=new GcTest("obj3");
	
	ob1=null;
	ob2=null;
	ob3=null;
	//建议回收对象
	System.gc();
}
}

 二、Object clone方法,他是浅复制不是甚复制该类要进行复制对象必须实现Cloneable接口,在用super.clone()调用

三、内嵌类:

四、定义泛型类,如果有多个不确定的类型,只需在定义类的时候写上XXClass<T1,T2,...,Tn>,

下面是测试的源代码:

package com.hewen;

public class GenericFoo<T> {
	private T foo;

	public void setFoo(T foo) {
		this.foo = foo;
	}

	public T getFoo() {
		return foo;
	}
}

 

package com.hewen;

public class TestGeneric {
 public static void main(String[] args){
	 GenericFoo<Boolean> foo1=new GenericFoo<Boolean>();
	 GenericFoo<Integer> foo2=new GenericFoo<Integer>();
	 //这样在定义对象的时候就确定了泛型类类型持有者T真正的类型,但是用Object
	 //类型需要装换,这样可以避免程序员在转型的时候类型写错,会出现ClassCastException
 }
}

4.1 泛型还可以限制可用的类型

可以在定义类型持有者时,同时使用extends指定这个类型持有者实例化,

实例化的对象必须是扩充自某个类型或者实现的某个接口,如:

定义类ListGenericFoo<T extends List>,这样实例化 这个类时必须是实现java.util.List接口的类

此时还可以要求更加严格一点如:ListGenericFoo<T extends List<String>>

4.2 使用通配符?

比如一个方法需要注入的方法是一个类型,但是这个类型是变化的如:

public void showFoo(GenericFoo<? extends String> foo)

这就是针对String或其子类而定制的内容,

如果不适用extends,则默认是允许Object及其下的子类

使用通配符声明对象与没有适用通配符的区别?

通过使用通配符声明的名称所参考的对象,您没有办法在对它的添加新的信息,您只能去的他当众的信息或是移出当中的信息

4.3 泛型的继承与接口的实现规则

如:GenericFood<T1,T2>父类,子类必须是SubGenericFood<T1,T2,T3> extends GenericFood<T1,T2>

interface IFoo<T1,T2>

ConcreteFoo<T1,T2> implements IFoo<T1,T2>

1
1
分享到:
评论

相关推荐

    初学Java傻瓜版-第2版

    这本书以清晰易懂的语言,为那些有一定英文基础但对编程知识尚为陌生的读者提供了深入浅出的Java学习路径。"初学"标签表明了它的目标受众,而"java"标签则明确指出了主题——Java编程语言。"清晰"和"高清"的标签可能...

    疯狂Java讲义-文字版 280页

    对于初学者来说,Java的世界可能会显得有些复杂和陌生,但通过本书的逐步引导,读者可以循序渐进地了解Java编程的方方面面。 本书的一个突出特点是实践为本。作者依据丰富的教学经验,精心设计了一系列实战项目,...

    [Java]华为机试题 2011-9-17

    在Java编程领域,华为的面试题往往涵盖广泛,从基础语法到高级设计模式,再到实际的编程问题解决能力。这篇2011年的机试题可能包括了多个部分,旨在评估候选人的Java编程技能和对软件开发的理解。虽然具体的题目内容...

    易动学院-《java基础课》视频教程(一)

    易动学院的《Java基础课》视频教程(一)是专为初学者设计的,旨在帮助那些对编程一无所知或者对Java语言陌生的人快速入门。本课程通过一系列详细的教学视频,引领学员从基础开始,逐步掌握Java编程的核心概念和技术...

    java 报表集合

    对于新手来说,首先应该掌握Java的基础知识,包括语法、面向对象编程、异常处理等。接着,学习数据库操作,如SQL查询,以及如何使用JDBC进行数据库连接。在Web开发方面,需要了解HTML、CSS和JavaScript,这是构建...

    Java JVM Instruction Set

    虽然本指南假设读者至少了解Java的基础语法,但即使只熟悉C++,也足以理解下面所讨论的内容。对于Java完全陌生的读者,可以参考作者提供的Java教程([http://heather.cs.ucdavis.edu/∼matloff/java.html]...

    java实习周记25篇借鉴.pdf

    第二周的实习内容着重在Java的基础语法上。我系统学习了类与对象之间的关系、基本数据类型、控制流程语句(如if、switch和循环语句)、修饰符、以及Static、Final、This等关键字。除此之外,我还深入探讨了String和...

    Java的实训心得体会范文.doc

    编写第一个“Hello World”程序时,我们开始接触Java的基础语法,例如main方法的定义。了解每个关键字的作用和规则是学习的起点,比如public、static、void以及main方法的参数类型。通过不断尝试改变代码,观察运行...

    core Java2

    "Core Java"一词通常指的是Java的基础部分,包括语法、面向对象编程概念以及Java标准库的核心API。在描述中提到的"corejava,对java的人来说,不陌生吧!"暗示了Java核心知识的重要性,它是每个Java开发者必须掌握的...

    探索Java编程语言在软件开发中的运用.pdf

    Java编程语言在语法上与许多高级语言相似,例如C语言,从数据类型、表达式、方法、语句结构等基础层面的知识来看,知识点与C语言相通的地方很多,因为Java编程语言是用C语言开发出来的,对于开发者而言会减少陌生感...

    dummies-java:通过“使用Java for Dummies进行编程开始”

    《使用Java for Dummies进行编程开始》是一本面向初学者的Java编程指南,旨在帮助那些对编程不熟悉或对Java语言陌生的人快速上手。这本书深入浅出地讲解了Java编程的基础概念,从安装开发环境到编写、编译和运行第一...

    java试用期自我总结.docx

    虽然一开始对Java的语法和开发环境感到陌生,但随着对Java基础的逐渐掌握,我开始适应并体会到了Java语言的独特魅力。在公司内部,我对CBP产品框架进行了深入的学习,对框架的总体结构与开发流程有了清晰的认识。...

    专题资料(2021-2022年)java实训个人总结.doc

    - 在实训初期,学员可能对Java编程较为陌生,但在实训过程中,通过实际操作和项目实践,对Java的语法、类、对象、接口、异常处理等基础知识有了更深入的认识。 - 特别是对面向对象编程的概念有了更清晰的理解,...

    Java程序设计基础课实践教学中的分层教学模式研究.zip

    初级层次的学生可能对编程概念较为陌生,需要从基础语法和控制结构开始教学;中级层次的学生具备一定的编程基础,可以进一步学习面向对象编程和数据结构;高级层次的学生则可以接触更复杂的问题解决策略和算法设计。...

    5种开发人工智能的最佳编程语言-【育儿知识】.doc

    Lisp可以适应各种解决问题的策略,但其古老和独特的语法可能会让现代开发者感到陌生,且需要额外的配置才能在现代环境中运行。 5. Prolog: Prolog是一种基于逻辑的编程语言,它的规则和声明性编程风格非常适合于...

    Scala中文经典教程,适合快速入门

    Java程序员可能对Scala的object声明感到陌生,object是Scala中一个非常重要的概念,它表示的是单例对象,也就是说这个对象是唯一的,没有其他实例。在上面的例子中,object声明的HelloWorld不单定义了一个类,同时也...

    java收银系统源码-OshStep:AtmelSAM3X8e的开源步进音序器(ArduinoDue)

    非常陌生。 我的专长是 Java 和 C# 等语言。 这个项目,如果有的话,已经向我证明了一种语言的重要性。 我一直认为 C++ 是具有类似 Java 特性的 C 语法。 Hooboy,Stack Overflow 社区会把我活活吃掉。 我认识到在这...

    汉语编程开发工具(网络数据库开发环境)

    我们对计算机语言并不陌生,如C、C++、VB、VF、JAVA等语言都有比较广泛的应用,但这些计算机语言无一例外都是从国外引进的,国人在学用这些计算机语言时首先要学英语,并且必须用英语来编写程序。英语在语法结构、...

    反编译工具fernflower20170830版

    Fernflower,这个名字可能对一些人来说并不陌生,它是一款强大的Java反编译器,以其高效且可读性强的反编译结果而备受赞誉。今天,我们将深入探讨Fernflower的20170830版本,以及如何利用它来理解并分析Java字节码。...

Global site tag (gtag.js) - Google Analytics