java
文章平均质量分 74
种个小果园
这个作者很懒,什么都没留下…
展开
-
基本数据类型
Java的基本数据类型有8种: 数值型: 整型:byte short int long 浮点型:float double 字符型:char 布尔型:boolean说明:1、整型数据,位数和取值范围不同:byte(8位 -128~127) short(16位 -32768~32767)原创 2017-06-22 15:26:13 · 233 阅读 · 0 评论 -
注解
注解目前非常的流行,很多主流框架都支持注解。注解的语法比较简单,除了@符号的使用之外,它基本与Java固有语法一致。标准注解:Java SE5内置了三种标准注解:@Override,表示当前的方法定义将覆盖超类中的方法。@Deprecated,使用了注解为它的元素编译器将发出警告,因为注解@Deprecated是不赞成使用的代码,被弃用的代码。@SuppressWarnin转载 2017-06-23 10:54:44 · 169 阅读 · 0 评论 -
反射
得到某个类的构造方法:1、得到一个类所有的构造方法:Constructor[] constructors = Class.forName("java.lang.String").getConstructors();或者:Constructor[] constructors =String.class.getConstructors();2、(根据传入参数)得到转载 2017-06-23 10:57:17 · 183 阅读 · 0 评论 -
方法的重写(overrid)和重载(overload)
方法重写是指子类和父类的关系,子类重写了父类的方法,但方法名、参数类型、参数个数必须相同;重载是指同一个类中,方法的名字相同,但参数个数或参数类型不同。转载 2017-06-23 11:13:00 · 271 阅读 · 0 评论 -
类的4大特性
a) 封装类的封装性是指将数据和过程(属性和方法)封装在一个包中,隐藏了内部实现机制,其他类可以使用,但不知道实现过程。b) 继承允许类的重用,子类能继承父类中的所有属性和方法,同时可以声明自己的新属性和方法,但是final类型的方法是不可以重写的。c) 抽象抽象类是指只定义类的方法,而没有具体实现,子类需要自己实现相应的方法。类中只要有一个抽象方转载 2017-06-23 11:13:46 · 1376 阅读 · 0 评论 -
抽象类和接口区别
a) 抽象类中可以有实现的方法,而接口中不允许有实现的方法。 b) 抽象类的成员变量可以使各种类型,接口的成员变量必须为public,不允许为private或protected等(一般接口中很少定义成员变量)。c) 抽象类中可以有静态代码块或静态方法,接口中不允许有静态代码块或静态方法。d) 一个类只能继承一个抽象类,而可以实现多个接口。原创 2017-06-23 11:15:24 · 235 阅读 · 0 评论 -
内部类
在一个类内部定义的类,叫做内部类。内部类包括:常规内部类,静态内部类,局部内部类,匿名内部类。A)常规内部类:常规内部类可以访问外部类所有的变量和方法,内部类中也可以实例化内部类(自己)。//外部类(外围类)public class outerClass { private int age = 20; //定义内部类 class inner{ //内部类可以定义自己的变量,原创 2017-06-23 11:16:08 · 273 阅读 · 0 评论 -
内部类使用final外部变量
内部类访问局部变量的时候,变量必须加上final修饰。局部变量在所处的函数执行完之后就释放了,但是内部类对象如果还有引用指向的话它是还存在的。(不管变量是不是final,他的生命周期都在于{}中),class Outer{ public转载 2017-06-23 11:26:43 · 265 阅读 · 0 评论 -
静态绑定与动态绑定
绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定.区别:1.静态绑定发生在编译时期,动态绑定发生在运行时2.变量都使用静态绑定,使用private或static或final修饰的变量或者方法,使用静态绑定。而虚方法(可以被子类重写的方法)则会根据运行时的对象进行动态绑定。3.重载(Overload)的转载 2017-06-23 11:27:32 · 289 阅读 · 0 评论 -
向上转型和向下转型
转型是在继承的基础上而言的。向上转型:子类引用的对象转换为父类类型称为向上转型。子类对象当成父类对象,只能调用父类的成员,如果子类重写了父类的方法就根据这个引用指向调用子类重写的这个方法(这个方法就是覆盖override,这个调用过程就称为“动态绑定”)。向上转型时,父类指向子类引用对象会遗失除与父类对象共有的其他方法,也就是在转型过程中,子类的新有的方法都会遗失掉,在编译时,系统会提原创 2017-06-23 11:29:19 · 493 阅读 · 0 评论 -
静态分派和动态分派
public class StaticDispatch { public void sayHello(Human guy) { System.out.println("hello, guy!"); } public void sayHello(Man guy) { System.out.println("hello, man!转载 2017-06-23 11:30:28 · 234 阅读 · 0 评论 -
自定义异常
java中可以自定义异常,并抛出、捕获自定义的异常。class exception1 extends Throwable{ public exception1(){} public exception1(String msg){ super(msg); }}自定义的异常,可以继承Throwable,也可以继承Exception。重写两个默认的构造方法,带参数的时必须原创 2017-06-23 11:32:15 · 226 阅读 · 0 评论 -
文件下载
文件的下载有2种方式:a)通过超链接直接下载ahref="./uploadFiles/today.txt">todaya>a href="./uploadFiles/today.rar">todaya>这种方式十分方便,但是如果浏览器可以识别该文件,例如txt,png,jpg等则会直接打开;若浏览器不识别文件格式,例如压缩包等,则会下载。但是,这种方式会将服务器目录直接原创 2017-06-23 11:36:51 · 193 阅读 · 0 评论 -
文件上传
使用文件上传功能,需要jar包支持:commons-fileuplod.jarcommons-io.jar1、在文件上传的表单中,要注明上传的特有类型:enctype="multipart/form-data"表单实例如下:上传测试:请选择文件:2、 在web.xml中配置servletUploadTestuploadTest.myUpl原创 2017-06-23 11:34:03 · 336 阅读 · 0 评论 -
正则表达式元字符汇总
1、\ 转义字符2、^ 开始位置3、$ 结束位置4、* 0次或多次匹配前面的字符5、 + 一次或多次匹配前面的字符6、? 0次或1次匹配前面的字符当?紧随其他限定字符,例如:*,+,?,{n},{n,},{n,m}时,表示匹配模式为“非贪心”,即匹配尽可能短的字符串,例如:oooo,o+匹配所有的o,而o+?只匹配单个o7转载 2017-06-23 11:39:22 · 406 阅读 · 0 评论 -
java.io.File类分析
java.io.File类中包含了大部分操作文件的方法。1、文件路径说明//硬盘绝对路径-文件 File file1 = new File("F:\\a\\a.txt"); //硬盘绝对路径-文件夹 File file2 = new File("F:\\a"); //项目相对路径-文件 File file3 = new原创 2017-06-23 11:40:46 · 255 阅读 · 0 评论 -
jdom解析XML
jdom利用纯java技术对xml文档进行解析、生成、序列化等各种操作。使用jdom之前,首先要导入jar包:jdom.jar 获得根元素://首先确定xml文件位置 String xmlPath = "./src/ceshi/jdomTest.xml"; //使用的解析器,这里表示默认的解析器 SAXBuilder builder = new SAXBuilder(f原创 2017-06-23 11:41:48 · 652 阅读 · 0 评论 -
JLabel动态变化问题
若要动态的改变JLabel的值,例如先显示aaa,一秒后显示bbb:getJLabel().setText(“aaa”);Thread.sleep(1000);getJLabel().setText(“bbb”);这样修改的结果,并不是先显示aaa,过一秒后显示bbb,而是,卡顿一秒后直接显示bbb,因为JavaSwing中,界面刷新是线程同步的,同一时间只有一个线程能执行刷新界面原创 2017-06-23 11:46:03 · 3740 阅读 · 1 评论 -
常量池(constant_pool)
常量池(constant_pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量和符号引用。运行时常量池是方法区的一部分。 Java中八种基本类型的包装类的大部分都实现了常量池技术,它们是Byte、Short、Integer、Long、Character、Boolean,另外两种浮点数类型的包装类(Float、原创 2017-06-22 15:36:00 · 837 阅读 · 0 评论 -
过滤器、监听器、拦截器
过滤器:使用Servlet中的过滤器Filter,首先类需要实现javax.servlet.Filter接口,其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request、Response)统一设置编码,简化操作;同时还可进行逻辑判断,如用户是否已经登陆、有没有权限访问该页面等等工作。它是随你的web应用启动而启动的,只初始化原创 2017-06-22 16:27:40 · 176 阅读 · 0 评论 -
泛型
泛型是JDK1.5的新特性,类似于C++中的模板,但是仅限于表面。Java中的泛型只是在编译器中实现,用于编译时类型检查,编译后,生成普通的非泛型字节码,这种实现技术成为erasure“擦除”,Java之所以只在编译时实现,是因为若运行时支持泛型,需要拓展虚拟机指令集,工作量庞大,并且使Java厂商升级其JVM造成很大困难。术语:1. ArrayList 泛型类型,其中E称为泛原创 2017-06-22 16:26:19 · 315 阅读 · 0 评论 -
ASCII字符集
ASCII是英文American Standard Code forInformation Interchange的缩写(美国信息交换标准代码)。ASCII码是目前计算机最通用的编码标准。因为信息在计算机上是用二进制表示的,这种表示法让人理解就很困难。因此计算机上都配有输入和输出设备,这些设备的主要目的就是,以一种人类可阅读的形式将信息在这些设备上显示出来供人阅读理解。为保证人类和设备,设备和转载 2017-06-22 15:44:40 · 369 阅读 · 0 评论 -
double和Bigdecimal
在java里面,有时候使用浮点型:double、float等,不能精确的表示小数,是因为java中使用二进制表示数据,而二进制不能精确地表示1/10(1/10不能用X*2^n表示),例如:System.out.println(0.05+0.01); 并不能精确的表示:0.06,而是:0.060000000000000005,所以这时只能使用精确精度来表示; 而涉及到金额的一原创 2017-06-22 15:45:23 · 243 阅读 · 0 评论 -
java的逻辑左移<<,逻辑右移>>和无符号逻辑右移>>>
java的逻辑左移(java逻辑右移(>>)是指将二进制数所有位向右移动,左侧移走部分使用符号扩展,正数(符号位:0)用0补,负数(符号位:1)用1补。十进制相当于除2的n次方。例如,156的二进制为1001 1100,156为正数,所以符号位是0,右移一位用0补,为:0100 1110。换算成十进制为78,相当于156除以2.java无符号逻辑右移(>>>)是指移出的低位舍弃,高位补0。原创 2017-06-22 15:46:22 · 3019 阅读 · 1 评论 -
java的位操作
在2进制里面,一个位只可能是0,或者1。位操作需要跟逻辑操作区分开(逻辑运算符AND(&&)、OR(||)以及NOT(!)能生成一个布尔值(true或false)。另外位操作还有一些复合操作符,如&=、|=、 ^=、>=。1、与 &全1为1,有0为0;任何数与0异或都等于0。2、或 |有1为1,全0为0。任何数与0或都等于原值。3、非 ~逐位取反4、异或 ^相同为0原创 2017-06-22 15:46:51 · 175 阅读 · 0 评论 -
进制转换
1、二进制转十进制从最低位(最右)算起,位上的数字乘以本位的权重,权重就是2的第几位的位数减一次方。比如第2位就是2的(2-1次)方,就是2;第8位就是2的(8-1)次方是128。把所有的值加起来。2(1-1)代表2的0次方,就是1;其他类推比如二进制1101,换算成十进制就是:1*2(1-1)+0*2(2-1)+1*2(3-1)+1*2(4-1)=1+0+4+8=132、十进制转转载 2017-06-22 15:47:23 · 1974 阅读 · 0 评论 -
修饰符
类修饰符:类修饰符只能是public、abstract、final或默认的(friendly),注意,friendly只是默认的,什么都不写即可,不能直接写上friendly,否则编译报错。访问修饰符:1、public:公共类,可以被任何对象访问。2、friendly:默认的,相同包下的对象才能访问。修饰符:3、abstract:抽象类,没有实现的方法,需要子类提供方法实现原创 2017-06-22 15:48:10 · 205 阅读 · 0 评论 -
字符串常用方法
1、length() 字符串长度2、charAt(int index); 返回对应索引的字符,返回char类型3、getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 截取多个字符String s1 = "abcdefghijklmnopqrstuvwxyz"; char[] ch =原创 2017-06-22 15:55:29 · 244 阅读 · 0 评论 -
字符串不可变特性
不可变对象(immutable object),顾名思义就是创建后不可以改变的对象,典型的例子就是Java中的String类。Strings = "ABC"; s.toLowerCase();如上s.toLowerCase()并没有改变“ABC“的值,而是创建了一个新的String类“abc”,然后将新的实例的指向变量s。相对于可变对象,不可变对象有很多优势:(1)不可变对象原创 2017-06-22 15:56:12 · 607 阅读 · 0 评论 -
数组
一维数组:创建一维数组(必须初始化大小):int[]a=new int[10]; String[]b=new String[10]; 或者直接初始化数组内容: int[] a={1,2,3,4,5}; String[]b={"1","2","3","4","5"};说明:1、使用fill函数替换(将数组a的a原创 2017-06-22 15:57:19 · 182 阅读 · 0 评论 -
java集合
集合包括两大接口:collection接口和Map接口。同步(Synchronous)和异步(Asynchronous)的区别:同步(阻塞)指发送一个请求,需要等待返回,才能发送下一个请求。异步(非阻塞)指发送一个请求,不需要等待返回,即可继续发送下一个请求。同步是线程安全的,异步不是线程安全的。同步是线程加锁的,不论哪一个线程运行到这个方法时,都要检查有没有其他的线程正在用这个方原创 2017-06-22 15:59:54 · 345 阅读 · 0 评论 -
值传递和引用传递
值传递:指的是在方法调用时,传递的参数是按值的拷贝传递,传递后就互不相关了。public class test2 {private void test1(int a){//做点事情 a=0; System.out.println(a);}public static void main(String[] args) {test2 t = new test2();int a原创 2017-06-22 16:05:03 · 186 阅读 · 0 评论 -
JVM类加载机制
类加载模型:Java程序运行的场所是内存,当在命令行下执行:java HelloWorld命令的时候,JVM会将HelloWorld.class加载到内存中,并形成一个Class的对象HelloWorld.class。其中的过程就是类加载过程:1、寻找jre目录,寻找jvm.dll,并初始化JVM;2、产生一个Bootstrap Loader(引导类加载器);转载 2017-06-22 16:07:55 · 310 阅读 · 0 评论 -
枚举类型
枚举的关键字是enum,可以定义在当前的类中:public enum sex{ man,woman }也可以定义在单独的类中,调用时,直接调用System.out.println(sex.man);需要注意的是,sex.man的类型是枚举类型,也就是sex,例如sex mysex = sex.woman;注意:1、枚举就相当于是一个类,里面的内容就相当于类的原创 2017-06-22 16:09:55 · 469 阅读 · 0 评论 -
锁
从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。synchronized与Lock对比1、如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况:1)获取锁的线转载 2017-06-22 16:11:22 · 172 阅读 · 0 评论 -
多线程
线程的生命周期:1、新建状态(new)用new创建的线程,处于新建状态,和其他java对象一样,仅仅在堆中分配了内存。2、就绪状态(Runnable)创建线程后,调用start()方法,进入就绪状态,这时线程位于可运行池中,等待获得CPU权限。3、运行状态(Running)线程占用CPU,执行程序代码4、阻塞状态(Blocked)阻塞状态的线程,java虚拟机不转载 2017-06-22 16:13:52 · 187 阅读 · 0 评论 -
单例模式
单例模式是指一个类只能有一个实例。单例模式可以避免实例的重复创建,全局访问的都是一个实例。创建单例模式大致思路就是将构造方法定义为私有,其他类不能实例化新的对象。创建单例模式有5种方式:懒汉模式:懒汉模式是常用的写法:优点:1、延迟加载。缺点:1、 在多线程情况下会存在问题,需要加同步关键字解决。但是同步后,性能会严重损耗。2、可以通过反射重复建立实例。 c转载 2017-06-22 16:17:50 · 136 阅读 · 0 评论 -
重排序
重排序通常是编译器或运行时环境为了优化程序性能,而采取的对指令重新排序执行的手段,重排序分为:编译器重排序和运行期重排序。编译期重排序的典型就是通过调整指令顺序,在不改变程序语义的前提下,尽可能减少寄存器的读取、存储次数,充分复用寄存器的存储值。假设第一条指令计算一个值赋给变量A并存放在寄存器中,第二条指令与A无关但需要占用寄存器(假设它将占用A所在的那个寄存器),第三条指令使用A的值且与第二转载 2017-06-22 16:21:17 · 269 阅读 · 0 评论