![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA基础
bestchenwu123
这个作者很懒,什么都没留下…
展开
-
获取指定属性名的属性值简易方法
public class ClassUtil { private static final String METHOD_PREFIX = "get"; // 约定俗称的getter()方法前缀 /** * 根据field名称获取field的值<br/> * 当field允许直接获取的时候,直接返回<br/> ...原创 2012-09-13 16:01:08 · 325 阅读 · 0 评论 -
JAVA中Scanner
Scanner 接受任意类型的可输入对象 包括file,Reader,inputStream 或者Readable接口类型的事实上Reader类属于Reader Scanner属于Iterator接口类型 所以可以调用hasNext()与next()方法 当然Scanner 在其基础上又添加了几组其他的方法hasNextInt等等其实质是先调用hasNext()方法如果有...原创 2011-04-10 20:41:03 · 76 阅读 · 0 评论 -
Java 中正则表达式
Java 中正则表达式是在Java 1.4版本以后才出现的。在java.util.regex包中Pattern类中列出了全部正则表达式内容,下面是列出几个常用正则表达式具体含义:NO. 表达式 描述 1 [abc] 表示取值可能是a,可能是b,可能是c 2 [^abc] 表示取值不是a,b,c的任意一个内容 3 [a-zA-Z] 表示...原创 2011-04-10 20:40:30 · 83 阅读 · 0 评论 -
编译器 标准选项
编译器有一批标准选项,目前的开发环境支持这些标准选项,将来的版本也将支持它。还有一批附加的非标准选项是目前的虚拟机实现所特有的,将来可能要有变化。非标准选项以 -X 打头。标准选项-classpath 类路径 设置用户类路径,它将覆盖 CLASSPATH 环境变量中的用户类路径。若既未指定 CLASSPATH 又未指定 -classpath,则用户类路径由当前目录构成。有关详细信息...原创 2011-04-10 20:39:04 · 154 阅读 · 0 评论 -
String包含几种不同的创建方式
String包含几种不同的创建方式,并且不同的创建方式都会将String存到入不同的区域内,例如:String池 或者 java堆中。其中有一些原理,只要懂这些原理。以上的问题都不是问题。 原理1:当使用任何方式来创建一个字符串对象s时,Java运行时(运行中JVM)会拿着这个X在String池中找是否存在内容相同的字符串对象,如果不存在,则在池中创建一个字符串s,否则,...原创 2011-04-10 20:38:17 · 88 阅读 · 0 评论 -
JAVA中系统属性与环境变量的区别
环境变量是指计算机所设置的Path值,它通常包括一组键值对而系统属性是指当前JVM专用的,它有可能与环境变量有交集,但不会完全相同。而这个系统属性通常包括当前JAVA版本,文件系统的格式等等。获取环境变量的方式是System.getEnv() 返回的是一个Map 而获取系统属性的方式是System.getProperties(),返回的是一个Properties(注意该类继承自Ha...原创 2011-04-10 20:35:09 · 595 阅读 · 0 评论 -
JAVA对IP进行排序
JAVA 对IP排序[code="java"]import java.util.*;public class TestIpSort { public static void main(String[] args){ //System.out.println(Arrays.toString(IP.class.getDeclaredFields())); IP ip5=ne...原创 2011-04-10 20:34:35 · 722 阅读 · 0 评论 -
JAVA 异常剖析
关于JAVA的异常基类Throwable,及异常链的产生原由Throwable类总共提供了3个属性,分别为:String detailedMessage;Throwable cause;StackTraceElement[] stackTrace其中第一个记录了异常的详细信息第二个表示抛出该异常的基类第三个表示异常的方法调用序列,从“方法调用处”直到“异常抛出处”...原创 2011-04-10 20:31:24 · 68 阅读 · 0 评论 -
数组 foreach
数组可以应用于foreach循环,并不是说数组类实现了Iterable接口可以做以下尝试:[code="java"]public void test(Iterable T){ for(T t:T){ System.out.println(t); }}[/code]当尝试将数组对象传送给这个方法的时候,将提示参数不合法错误。...原创 2011-04-10 20:30:38 · 77 阅读 · 0 评论 -
关于LinkedList类的一些方法
关于取链表的第一个元素的方法,共有以下3种:getFirst(),element(),peek()其中前两个方法在列表为空的时候会抛出NoSuchElementException而第三个方法在列表为空的时候会返回一个null同理取链表的最后一个元素的方法时,也有以下3种方法:removeFirst(),remove(),poll()其中前两个方法在列表为空的时候会抛出N...原创 2011-04-10 20:29:52 · 143 阅读 · 0 评论 -
Collection接口的add(),remove()操作
Collection接口的add(),remove()操作等 可能不被支持 ,但多半情况下会抛出异常(非一定)理由是:例如查看ArrayList 等的父类AbstractList 中定义的add(),remove()方法等[code="java"]public boolean add(E e){ add(size(),e); return ture;}publi...原创 2011-04-10 20:27:23 · 307 阅读 · 0 评论 -
关于内部类的继承
[code="java"]class TestInner{ class A{ A(int i){ System.out.println(“i=”+i); } }}public class Test{ class B extends TestInner.A{ B(Testinner o){ o.super(5); } } pu...原创 2011-04-10 20:26:45 · 86 阅读 · 0 评论 -
使用Class.forName(“classname”)与对象.class的区别
使用Class.forName(),为了产生Class引用,会立即执行静态块的初始化,但不执行构造器方法而使用对象.class来创建对对象的引用时,则事实上做了以下3步事情:1:加载 这是由类加载器完成的,该步骤将查找字节码文件,然后创建一个class对象2:链接 该步骤将验证类中的字节码,为静态域分配存储空间 3:初始化 将执行类的静态块的初始化工作注意:该初始化...原创 2011-04-10 20:41:29 · 145 阅读 · 0 评论 -
RTTI运行时识别类型信息
RTTI运行时识别类型信息在 JAVA中有4种形式分别为:1):强制类型转换House a=(House)b;2)利用类字面常量 代表对象的类型的Class对象 例如Hose.class3)利用JAVA关键词instanceof 来判断 语法格式为一个对象 instance 一个类的名字4)利用Class.isInstanceof(Object t) 其本...原创 2011-04-10 20:41:57 · 95 阅读 · 0 评论 -
JAVA 迭代 删除
[code="java"]List list=new ArrayList(Arrays.asList("a","b","c")); Iterator it=list.iterator(); while(it.hasNext()){ String s=(String)it.next(); if(s.equals("d")){ it.remove(); ...原创 2011-04-12 19:59:26 · 86 阅读 · 0 评论 -
JAVA快速读取文本最后一行
// 使用RandomAccessFile , 从后找最后一行数据[code="java"]RandomAccessFile raf = new RandomAccessFile("E:/demo/data.dat", "r");long len = raf.length();String lastLine = "";if (len != 0L) { long pos =...原创 2011-04-11 13:44:14 · 562 阅读 · 0 评论 -
计算机 原码 反码 补码
原码:将一个整数,转换成二进制,就是其原码。如单字节的5的原码为:0000 0101;-5的原码为1000 0101。 反码:正数的反码就是其原码;负数的反码是将原码中,除符号位以外,每一位取反。如单字节的5的反码为:0000 0101;-5的反码为1111 1010。 补码:正数的补码就是其原码;负数的反码+1就是补码。如单字节的5的补码为:0000 0101;-5的...原创 2011-04-11 13:32:13 · 108 阅读 · 0 评论 -
JAVA的包导入机制
java中有两种包的导入机制,总结如下:单类型导入(single-type-import),例如 [code="java"]import java.io.File;[/code]按需类型导入(type-import-on-demand),例如 [code="java"]import java.io.*;[/code]这里分析一下这两种导入类型的大致工作原理供...原创 2011-04-11 13:26:27 · 264 阅读 · 0 评论 -
JDK1.5与1.6在Override上的区别
@Override是JDK5 就已经有了,但有个小小的Bug,就是不支持对接口的实现,认为这不是Override而JDK6 修正了这个Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override我想这个问题肯定困扰了很多人,我也不例外。新公司用的东西多多少少会与我们以前公司的有所不同。所以这个问题也时常伴随在我们身边。第一种解决方案:@Override是JDK5 就已...原创 2011-04-11 13:20:40 · 73 阅读 · 0 评论 -
JAVA获取本地的IP地址方法
[code="java"]import java.net.InetAddress;try{ InetAddress test=InetAddress.getLocalHost(); System.out.println(test.getHostAddress()); }catch(UnknownHostException e){ e.printStackTra...原创 2011-04-11 13:18:36 · 226 阅读 · 0 评论 -
JAVA读写锁
public interface ReadWriteLockReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。只要没有 writer,读取锁可以由多个 reader 线程同时保持。写入锁是独占的。 与互斥锁相比,读-写锁允许对共享数据进行更高级别的并发访问。虽然一次只有一个线程(writer 线程)可以修改共享数据,但在许多情况下,任何数量的线程可以同时...原创 2011-04-11 13:16:07 · 84 阅读 · 0 评论 -
LOG4J日志等级
Log4j默认把日志信息分为五个等级 all原创 2011-04-11 13:15:27 · 60 阅读 · 0 评论 -
数组的打印
介绍下Arrays.deepToString(Object[] a)方法,该方法返回一个String:如果该数组它会循环打印一个一维或多维数组,打印出来的格式为:[[],[]]如果一个数组内包含对其自身的引用,则将该元素打印成[...]对于多维数组的拷贝System.arraycopy(obj[] src,int srcIndex.obj[] dest,int srcInd...原创 2011-04-11 11:46:32 · 141 阅读 · 0 评论 -
数组的初始化
对数组的初始化有以下几种方法:1:显示的初始化int[] a=new int[5]; 2: 所谓的聚集初始化方法int[] a=new int[]{1,2,3};int[] a={1,2,3};是上面一种方法的简写形式此时不能写成int[] a=new int[3]{1,2,3} 其长度应该由后面的元素个数来决定PS :多维数组的长度是它的行数,而不是它的总元素个数...原创 2011-04-10 20:42:35 · 70 阅读 · 0 评论 -
关于JAVA反射
关于JAVA反射在利用class.getDeclaredMethod(String methodName)与class.getDeclaredMethod(String name,Class... params)的区别前者是指根据方法名来返回一方法后者是根据方法名,方法参数所代表的class例如 如果有2个方法public void f()public void f(Str...原创 2011-04-10 20:42:16 · 57 阅读 · 0 评论 -
JAVA中float与double的区别
float是单精度类型,精度是6位有效数字,取值范围是10的-38次方到10的38次方,float占用4个字节的存储空间double是双精度类型,精度是15位有效数字,取值范围是10的-308次方到10的308次方,double占用8个字节的存储空间当你不声明的时候,默认小数都用double来表示,所以如果要用float的话,则应该在其后加上f例如:float a=1.3;则会提示...原创 2011-04-10 20:25:56 · 324 阅读 · 0 评论 -
关于Math 类的 3个静态方法ceil,floor,round方法
关于Math 类的 3个静态方法ceil,floor,round方法ceil 是取其附近的最大值floor是取其附近的最小值roud 是取该值的中间值与该值进行相加运算后除以2 然后再取其附近的值例如:[code="java"]Math.cel(11.2) =11Math.floor(11.2)=12Math.round(11.2) (11.2+11.5)/2=1...原创 2011-04-10 20:25:36 · 245 阅读 · 0 评论 -
JAVA方法命名规范
1:不能以数字开头2:不能包含任何嵌入的空或点号”.” 以及除下划线”_””$”字符之类的其他的特殊字符3:不能为JAVA关键字原创 2011-04-10 20:08:57 · 222 阅读 · 0 评论 -
JAVA中的Transient
JAVA中的transient 把一个对象的表示转化为字节流的过程称为串行化Serialization,从字节流中把对象取出并重建出来的过程称为反串行化,transient为不应被串行化的数据提供了一个语言级的标记数据方法。 对不需要序列化的类的域使用transient关键字,以减少序列化的数据量。...原创 2011-04-10 20:08:41 · 78 阅读 · 0 评论 -
JAVA中的volatile以及transient的区别
在JVM1.2之前,JAVA的内存模型总是从主存读取变量,所以不需要特别注意。 在当前的JAVA内存模型下,线程可以把变量保存在本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写,这就可能造成了一个线程在主存中修改了变量的值,而另外一个线程却还是使用了寄存器中的拷贝,造成了数据的不一致。 解决这个问题的方法是:只需要把变量声明为volatile类型即可。这就指...原创 2011-04-10 20:08:04 · 116 阅读 · 0 评论 -
Log4j配置
log4j.properties的定义格式 Log4j.properties定义一般分3部分:[code="java"] Log4j.rootLogger(必须)、log4j.appender(必须) 、log4j.logger(不必须) Log4j.rootLogger这个配置是必须的,它的定义格式为: Log4j.rootLogger=level,appenderN...原创 2011-04-10 20:06:51 · 73 阅读 · 0 评论 -
JAVA类型转换
进行类类型转换的唯一原因就是:在暂时忽略对象的实际类型之后,使用对象的全部功能。将一个子类的引用赋给一个超类变量,编译器是允许的,这称之为向上转型反之如果将一个超类的引用赋给一个子类变量时,必须进行强制类型转换,这样才能通过编译时的检查。这称之为向下转型,必须进行强制转换,这个过程简单的使用instanceof运算符就可以实现。...原创 2011-04-10 19:59:10 · 86 阅读 · 0 评论 -
多态与动态绑定
[code="java"]//Manager类是Employee类的子类Manager boss=new Manager(“carl”,8000,1987,12,15);Employee[] staff=new Employee[3];staff[0]=boss;staff[1]=new Employee(…);staff[2]=new Employee(…);for(...原创 2011-04-10 19:58:29 · 75 阅读 · 0 评论 -
super与this的区别
Super与this的相同点:This有2个用途:一:引用隐式参数 二:是调用该类其他的构造器Super关键字也有2个用途:一:调用超类的方法 二:是调用超类的构造器Super与this不同,它不是一个对象的引用,不能将super赋给另一个对象变量,它只是一个指示编译器调用超类方法的特有关键字...原创 2011-04-10 19:57:41 · 61 阅读 · 0 评论 -
JAVA中拷贝
如果需要返回一个可变数据域的拷贝,就应该使用克隆[code="java"]import java.util.Date;public class Employee { public static void main(String args[]) throws Exception{ Employeer em=new Employeer(); System.out.print...原创 2011-04-10 19:56:31 · 107 阅读 · 0 评论 -
JAVA 字节扩展
一个字节,需要扩展成两个字节。规则示例:0xAB 扩展后变为:0x0A0x0B,在java中如何实现。 Byte b = 0x6a; Integer t = 0xff & b; System.out.println(Integer.toBinaryString(t)); t = ((0xf0 & b) << 4) | (0x0...原创 2011-05-12 10:04:20 · 188 阅读 · 0 评论 -
编译包下面的源文件
大家都知道编译一个普通的没有包结构的JAVA程序: javac **.java java ** 但是假如我们有3个在一个包下面的程序应该怎么办呢? 例如: 这是一个常见的工程目录结构,如果尝试定位到Pluzzle目录,然后执行以上的javac命令,会报错: 原因就在于当前JAVA的classpat...原创 2011-05-02 10:31:14 · 105 阅读 · 0 评论 -
JAVA SQL 事务
在与数据库操作时,如果执行多条更新的SQL语句(如:update或insert语句),在执行第一条后如果出现异常或电脑断电,则后面的SQL语句执行不了,这时候设定我们自己提交SQL语句,不让JDBC自动提交,格式为:conn.setAutoCommit(false);执行多条SQL语句;conn.commit();//恢复自动提交模式conn.set...原创 2011-04-25 19:29:58 · 488 阅读 · 0 评论 -
JAVA中的方法覆盖与重载的区别
方法的覆盖与重载是JAVA多态性的一个表现,方法名称和方法的参数类型及个数一起构成了方法的唯一标识,称之为方法签名。方法的覆盖是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。如果子类定义了与父类方法有相同的方法签名,并且有相同的返回类型,我们称之为覆盖如果一个类中定义了多个同名的方法,他们或有不同的参数类型或者不同的参数个数,我们称之为方法重载。在覆盖的时候要注意...原创 2011-04-10 20:09:22 · 366 阅读 · 1 评论 -
JAVA中关键字instanceof 的用法和含义(扩展 比较isAssignableFrom关键字)
isAssignableFrom 是用来判断一个类class1是否和另外一个类class2 相同或是其超类或接口 通常调用格式是: Class1.isAssignableFrom(Class2) 调用者和参数都是java.lang.Class类型 而instanceof是用来判断一个对象实例是否是另外一个类或接口的实现,或者是否是其子类子接口的实现...原创 2011-04-10 20:09:54 · 125 阅读 · 0 评论