java基础知识
来源:互联网 发布:淘宝产品短连接 编辑:程序博客网 时间:2024/06/05 11:13
1,三者区别
final— 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将基础类型变量声明为final,可以保证它们在使用中不被改变,所以此变量变为常亮。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 引用类型声明为finnal,不可以改变它所指向的对象,但所指向对象中得知可以改变。
finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize— 方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
2,接口和抽象类
1),抽象类可以有字段,可以有非抽象的方法,接口的成员变量只能为static final类型,即为常量。
2),子类可以继承多个接口但只能继承一个抽象类。
3,static修饰的成员变量,方法和代码段
类加载时创建初始化和执行,对于一个类只有一份,用类名访问。
http://www.cnblogs.com/gold-worker/archive/2012/09/27/2706232.html
http://www.cnblogs.com/gold-worker/archive/2012/09/27/2706232.html
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),
而不允许访问实例成员变量和实例方法;实例方法则无此限制。
4,Java中是否可以覆盖(override)一个private或者是static的方法?
一.静态方法和字段可以被继承
二.如果子类中出现同名的静态方法和字段,将重新创建新的同名的静态字段和方法,隐藏原来的静态方法和字段,而不是重写和覆盖
三.如果是子类中有同名的非静态方法和字段,也将隐藏原来的非静态方法和字段,此时不能用类访问该静态方法和字段,只能创建对象后访问
四.私有静态方法不能被访问,同名也没有关系
二.如果子类中出现同名的静态方法和字段,将重新创建新的同名的静态字段和方法,隐藏原来的静态方法和字段,而不是重写和覆盖
三.如果是子类中有同名的非静态方法和字段,也将隐藏原来的非静态方法和字段,此时不能用类访问该静态方法和字段,只能创建对象后访问
四.私有静态方法不能被访问,同名也没有关系
private方法基本是默认的final,因为对子类不可见,所以无法重写。
方法重写:具有相同方法名称、参数列表和返回类型。
6,构造函数不能被继承,所以不能重写,只能通过super调用
7,java面向对象的三个基本特征为:继承,封装,多态。String源码解析:http://www.gjprj.cn/news1.asp?id=3164
9,强制类型转换分为基本数据类型和引用数据类型两种情况
引用类型 :
举个例子来说,比如原来定义了两个类型,FatherClass和SonClass,然后构造了一个SonClass类型的对象,用一个FatherClass类型的变量father引用了,就像这样:
FatherClass father = new SonClass();
那么,需要将这个对象的类型还原的时候,就可以用这个表达式。
SonClass son = (SonClass)father;
其实,father仍然是FatherClass类型,只不过临时把它的能力提升了一下,然后这一切都交给了son这个变量。但是经过这样处理以后,这个对象就真正提升了能力了,在son这个变量的引用之下,从此以后恢复真身,可以自由发挥了。
父类到子类的强制类型转换并不总是能够成功
还是举个例子:
FatherClass f = new FatherClass();
SonClass s = (SonClass)f; //这时候就会报错,运行时报错,编译能通过的
编译器只检查类型之间有无继承关系,有则通过;运行时检查真正类型,是则通过。
基础类型
具体规则为:byte(1byte)→short(char)(2byte)→int(4)→long(8)→float(4)→double(8),如果按这个顺序,会自动转换;箭头反方向的话必须使用强制转换。
10,基础类型的成员变量与局部变量
java中没有c语言中全局变量的概念,对于基础类型,只有成员变量和局部变量。
成员变量存放于堆中,依附于对象而存在,随着对象而产生和消亡。所以对象a的name存在于堆中,只要有a的引用就可改变它;
局部变量存在于方法内,随着方法的结束而消失。方法changInt的i与main中的i,虽然都是i,但它们是两个变量,作用于两个不同的方法,必须通过返回值进行值传递。
11, 静态方法只能访问类的静态成员,对于非静态成员,只能new出类的实例后访问。
12,正则表达式
几种写法:1)String s = new String("aaaaab");
boolean rs = s.matches("^a*b&");
2) Pattern p = Pattern.de>compilede>("^a*b$");
Matcher m = p.de>matcherde>("aaaaab");
boolean b = m.de>matchesde>(); //匹配整个字符串
boolean b = m.find(); //匹配子串,并把匹配过的字串删除继续匹配下面的子串,比如aaab-aab-aab
boolean b = m.lookingAt();//每次从头上匹配子串
具体匹配规则详见util.regex中的Pattern
boolean rs = "\\".matches("^\\\\$");//匹配一条反斜线
boolean rs = "a".matches("^[a-z]{1,3}$");//匹配a-z中任何一个字母出现1-3次
匹配的模式中要写上开始符^和结束符$。
\\s,\\d这些预定义的标示符都要再加一个斜杠表示转译
java7:
http://wenku.baidu.com/link?url=s-lktjYYv8TBzqZonvQn0KiS5GUg0-fqT_EB-0WbML7pEJ0mxdZ8ZLL0gFQ7Pq5YLoDG9lRvbVgnG-eqLgE9TgeUe-b9OcbQiIqZWSWdbsO
ta="88244" rel="nofollow" >复制代码 代码如下:
interface Formula {
double calculate(int a);2)“Lambda 表达式”(lambda expression)是一个简化的 匿名函数,Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁。
http://wenku.baidu.com/link?url=s-lktjYYv8TBzqZonvQn0KiS5GUg0-fqT_EB-0WbML7pEJ0mxdZ8ZLL0gFQ7Pq5YLoDG9lRvbVgnG-eqLgE9TgeUe-b9OcbQiIqZWSWdbsO
TransferQueue:详见并发编程
fork join线程池框架
编程语法方面:http://blog.csdn.net/cyq1984/article/details/4877413
NIO.2 java7对nio做了增强
NIO.2 java7对nio做了增强
1)增添了nio.file包,提供了全面的文件IO和文件系统访问支持。比如Path接口表示文件路径。
2)增加了几个异步的Channel就是aio。关于Asynchronous I/O参见NIO.
java8:
http://developer.51cto.com/art/201404/435591.htm
1)Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:
interface Formula {
double calculate(int a);
default double sqrt(int a) {
return Math.sqrt(a);
}
}
作用:为接口添加新方法使不会再去修改所有实现类了。
不采用Lambda的老方法,匿名类直接new接口:
ortant; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important;" border="0" cellpadding="0" cellspacing="0" >ortant; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important;" >ortant; padding: 0px !important; font-size: 1em !important; line-height: 1.3em !important; height: auto !important; border: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; left: auto !important; outline: 0px !important; overflow: visible !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; min-height: inherit !important; color: rgb(175, 175, 175) !important;" >ortant; font-size: 1em !important; line-height: 1.3em !important; height: auto !important; border: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; left: auto !important; outline: 0px !important; overflow: visible !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; min-height: inherit !important;" >de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important;" >Runnable runnable1=de>de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 102, 153) !important;" >newde> de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important;" >Runnable(){de> de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important; color: gray !important;" >@Overridede> de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 102, 153) !important;" >publicde> de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-weight: bold !important; font-size: 1em !important; min-height: inherit !important; color: rgb(0, 102, 153) !important;" >voidde> de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important;" >run(){de> de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important;" >System.out.println(de>de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important; color: blue !important;" >"RunningwithoutLambda"de>de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important;" >);de> de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important;" >}de> de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important;" >};de>
1
2
3
4
5
6
ortant; padding: 0px !imp使用Lambda:
ortant; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; font-size: 1em !important; min-height: inherit !important;" border="0" cellpadding="0" cellspacing="0" >ortant; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important;" >ortant; padding: 0px !important; font-size: 1em !important; line-height: 1.3em !important; height: auto !important; border: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; left: auto !important; outline: 0px !important; overflow: visible !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; min-height: inherit !important; color: rgb(175, 175, 175) !important;" >ortant; font-size: 1em !important; line-height: 1.3em !important; height: auto !important; border: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; bottom: auto !important; float: none !important; left: auto !important; outline: 0px !important; overflow: visible !important; right: auto !important; top: auto !important; vertical-align: baseline !important; box-sizing: content-box !important; min-height: inherit !important;" >de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important;" >Runnable runnable2=()->{de> de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important;" >System.out.println(de>de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important;; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important; box-sizing: content-box !important; font-size: 1em !important; min-height: inherit !important; color: blue !important;" >"RunningfromLambda"de>de style="font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-bottom-left-radius: 0px !important; background-image: none !important; border: 0px !important; bottom: auto !important; float: none !important; height: auto !important; left: auto !important; line-height: 1.3em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !imp
1
2
3
ortant; padding: 0px !imp