现在的位置: 首页 > 综合 > 正文

Java相关知识一览

2017年12月23日 ⁄ 综合 ⁄ 共 8354字 ⁄ 字号 评论关闭
import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; public class TestRef { public static void main(String args[]) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { Foo
foo = new Foo("这个一个Foo对象!"); ...
java.lang.IndexOutOfBoundsException: No group 9 java.util.regex.Matcher.group(Unknown Source) java.util.regex.Matcher.appendReplacement(Unknown Source) java.util.regex.Matcher.replaceAll(Unknown Source) java.lang.String.replaceAll(Unknown
Source) 问题出在replaceAll()上面。 可以把它换成replace()就可 ...
    Java设计模式-图解-附代码     目录 1. 设计模式 3 1.1 创建型模式 4 1.1.1 工厂方法
Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的《ThinkinginJava》。它是一本写的相当深刻的技术书籍,Java语言基础部分基本没有其它任何一本书可以超越它。该书的作者BruceEckel在网络上被称为天才的投机者,作者的《Thinking in C++》在1995年曾获SoftwareDevelopmentJoltAward最佳书籍大奖,《Thinking inJava》被评为1999年JavaWorld“最爱读者欢迎图书”,并且赢得了编辑首选图书奖。作者从1986年至今,已经发表了超过150篇计算机技术文章,出版了6本书(其中4本
...
可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定的任务。优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。本文讨论的主要是如何提高代码的效率。在Java程序中,性能问题的大部分原因并不在于Java语言,而是在于程序本身。养成好的代码编写习惯非常重要,比如正确地、巧妙地运用java.lang.String类和java.util.Vector类,它能够显著地提高程序的性能。下面我们就来具体地分析一下这方面的问题。
1、     尽量指定类的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应 ...
        重写方法规则如下:   * 变元列表必须与被重写的方法的变元列表完全匹配,如果不匹配,则得到的可能就是一个意想不到的重载方法   * 返回类型必须与超类中被重写方法中原先声明的返回类型或其子类型   * 访问级别的限制性一定不能比被重写方法的更严格   * 访问级别的限制性可以比被重写方法的弱   * 仅当实力方法被子类继承时,它们才能被重写   * 重写方法可以抛出任何未检验(运行时异常),无论被重写方法是否声明了该异常   *重写方法一定不能抛出比被重写方法声明的检验异常更新或更广的检验异常
  * 重写方法可以抛出更少 ...
Java合法标识符规范   (1)标识符必须以字母,货币符号($)或连字符(如下划线)开头。标识符不能以数字开头   (2)第一个字符之后,标识符可包含字符,货币符号,连字符或数字的任意组合   (3)在实际使用中,对标识符可以包含的字符数没有限制   (4)不能将Java关键字作为标识符   (5)Java中的标识符是大小写敏感的,foo和FOO是两个不同的标识符   源文件声明规则   * 每个源文件只能有一个public类   * 如果文件中有一个public类,那么文件名必须与public
类的名称匹配   *一个文件可以有多个非公共类   * 不 ...
  1.一般的用法:continue 和break用于跳出循环。   continue指结束当前1次循环的继续执行,计数器步进,循环操作继续。如下 Java代码    for ( int i = 0
阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系统的同学对它一 定已经很熟悉了。Java 提供了大量方法来支持阻塞,下面让我们逐一分析。   1. sleep() 方法:sleep() 允许 指定以毫秒为单位�� ...
  package com.zhaopin; public class SortTest { static int data []={2,4,7,5,1,9,6,0,3,8}; public static void main(String args[]){ //sortDataByBubble(data); //冒牌排序 // sortDataBySelect(data); //选择排序 // sortDataByInsert(data); //选择排序 sortDataByShell(data,data.length);
//选择排序 prin ...
101、java中会存在内存泄漏吗,请简单描述。会。如:int i,i2;  return (i-i2);   //when i为足够大的正数,i2为足够大的负数。结果会造成溢位,导致错误。     102、java中实现多态的机制是什么?方法的重写Overriding和重载Overloading是Jav ...
71、简述synchronized和java.util.concurrent.locks.Lock的异同?主要相同点:Lock能完成synchronized所实现的所有功能主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并� ...
51、垃圾回收的优点和原理。并考虑2种回收机制。 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回� ...
11、HashMap和Hashtable的区别。  HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。 HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。
Hashtable继承自Dictionary类,而HashMap是Java1.2引 ...
1、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类     2、� ...
  import java.applet.Applet; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GraphicsConfiguration;   import javax.media.j3d.BoundingSphere; import javax.media.j3d.BranchGroup; import javax.media.j3d.Canvas3D;
import javax.media.j3d.Geometry; import javax.media.j3d.G ...
打包成双击可执行的jar文件。 推荐插件:fatJar(Eclipse使用) 下载地址 http://sourceforge.net/project/showfiles.php?group_id=115990&package_id=125924 我用的是Eclipse,它自带的打包方法在打包一些图片等资源时不是很爽。可以使用这个插件。 安装方法解压后将plugins文件夹下的net.sf.fjep.fatjar_0.0.24文件夹拷到eclipse安装目录的plugins
下。 用此工具可以方便的将eclipse中的工程打包成jar文件。如果 ...
Java中方法的局部变量必须要初始化,否则不能使用和操作,   要是类数据成员(即字段)是基本类型,情况就会变得有些不同。类的每个基本类型数据成员保证都会有一个初始值。   在类里定义一个对象引用时,如果不将其初始化,此引用就会获得一个特殊值null。     初始化的顺序规则, 1 自动初始化(编译器自动为数据成员赋值) 早于  构造器初始化(如果有的话) 2 在类的内部,变量定义的先后顺序决定了初始化的顺序,即使变量定义散布于方法定义之间,他们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
  3 静态数据的初始化:无论创建多少个对象,静态数据只占一份存储空 ...
在static方法内部不能调用非静态方法,反过来是可以的。   把一个对象用完之后就“弃之不顾”的做法并非总是安全的,由于垃圾回收期只知道释放那些经由new分配的内存,所以它不知道如何释放(并非使用new)内存区域。   记住3点: 1 对象可能不被垃圾回收。 2 垃圾回收不等于“析构”。 3 垃圾回收只于内存有关。   finalize()方法可以用来在清理对象前执行清理工作(主要是对特殊的情况(并非使用new分配的内存,即调用本地方法))
在构造其中可以用this调用一个构造器,但却不能调用两个。   此外,必须将构造器调用置于最起始处,否则编译器会报错。   除了构造器之外,编译器禁止在其他任何方法中调用构造器。
return :两方面的用途,一方面指定一个方法返回什么值,另一方面他会导致当前的方法退出。   任何迭代语句的主体部分,都可以用break和continue控制循环流程。break用于强行退出循环,不执行循环中剩下的语句。而continue则停止执行当前的迭代,然会退回循环起始处,开始下一次的迭代。   注意:break和contiue只能中断最内层的循环。当然,如果想在中断循环的同时退出,简单地用一个return即可。   Java中switch语句只能对
int 和 char 类型数据起作用。
按位操作符:   如果两个输入位都是1,则按位“与” 操作符(&)生成一个输出位1;否则生成一个0;   如果两个输入位只有有一个是1,则按位“或” 操作符(|)生成一个输出位1;否则,两个都是0才生成一个0;   如果输入位的某一个是1,但不全都是1,那么按位“异或” 操作符(^)生成一个输出位1;   "~"非 为取反运算符;   移位操作符:   运算对象也是二进制的位。移位运算符只能用来处理整型。   左移位操作符(<<)能按照操作符右侧指定的位数将操作符左边的操作数向右移动。“有符号”右移位操作符使用“符号扩展”;
...
 使用逻辑操作符时,我们会遇到一种“短路现象”,即一旦能够明确无误地确定整个表达式的值,就不在计算表达式余下部分了。所以,整个逻辑表达式靠后的部分有可能不会被运算。
基本类型存储了实际的数值,而并非只想一个对象的引用,所以在为其赋值的时候,是直接将一个地方的内容复制到了另一个地方。例如,对基本数据类型使用a=b,那么b的内容就复制给a.若接着又修改了a,而b根本不会受这种修改的影响。   对一个对象赋值时,真正操作的是这个对象的引用。所以倘若“将一个对象赋值给另一个对象”,实际是将“引用”从一个地方复制到另一个地方。这意味着假若对对象使用c=d,那么c和d都指向原本只有d指向的那个对象。  
  1 作用域决定了再起内定义的变量名(基本类型)的可见性和生命周期。   2 Java对象不具备和基本类型一样的生命周期。当用new 创建一个Java对象时,它可以存活于作用域之外。如 { String s=new String("a string"); } 引用s在作用域终点已近消失了。然而,s只想的String队形仍继续占据内存空间。   问题:如果JAVA让对象继续存在,那么靠什么才能防止这些对象填满内容空间,进而阻塞你的程序呢? 答案:Java有一个垃圾回收器,用来监视用new创建的所有对象,并辨别那些不会再被引用的对象。随后释放那
...
1 JAVA中一切都视为对象,但操作的标识符实际上是对象的一个“引用”。如:String s; s是一个引用,并不是对象,它没有和    任何事物相关联。   2 存储到什么地方?   有5个不同的地方可以存储数据:   (1)寄存器,最快的存储区(在处理器内部)但是数量有限,所以寄存器根据需求进行分配。   (2)堆栈,位于通用RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存,若向上移动,则释放那些内存。这是一种快速有效的分配存储方法,仅次于寄存器。创建程序时,JAVA系统必须知道存储在堆栈内所有项得确切生命周期,
...
public class Test2{ public static void main(String [] args){ A a=new A(); B b=new B(); a.func(); b.func(); System.out.println("a.i="+a.i); System.out.println("b.i="+b.i); A c= new B(); c.func(); System.out.println("c.i="+c.i); } }
class A { int i=1; ...
1   java中:         byte   1(字节)         short  2          int    4         long   8          float  4         double 8           char   2 2   System.out.println(3+5+&quot;a&quot;+6+7);输出:8a67 3  开发与运行Java程序需要经过的三个主要步骤为 编辑源程序、编译生成字节码
和 解释运行字节码。 4  interface只能用public修饰。 5   字节流转换成字符流可以用InputStr ...
大家看下面的代码 class A { public static void pri() { System.out.println("A"); } } public class B extends A { public static void pri() { System.out.println("B"); } public static void main(String[] args) { A a = new B(); a.pri(); } }   输出结果是:
  A ...
public class B { public int aMethod() { static int i = 0; i++; return i; }   上边这个代码的错误就是:类的实例方法中不能定义静态变量。看看下面这面的 public class B { public static int aMethod() { static int i = 0; i++; return i; }  这个还是错误的。所以大家要记住:在类的实例方法和静态方法中都不能定义静态变量。那么只能能定义静态变量呢?   下面说一下具体原理:
  只有类才存在静 ...

    抱歉!评论已关闭.