- 浏览: 56777 次
- 性别:
- 来自: 火星
最新评论
-
jjjssh:
你好,有没有完整的demo,我想研究下,我部署的war包,总是 ...
ear,war包下velocity模板找不到 -
LSQ6063:
这个图显示的有待商确
堆排序(HeapSort) Java实现 -
javaeye官理员:
...
堆排序(HeapSort) Java实现 -
hongjn:
tan4836128 写道缺点:该算法的的时间长度:data. ...
计数排序(CountingSort) Java实现 -
tan4836128:
我得给楼主拍砖,算法展示出来,同时要分析说明思路,执行过程,优 ...
计数排序(CountingSort) Java实现
文章列表
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class CodeDemo {
public static void main(String[] args) {
String s = "简体中文";
System.out.println(Arrays.toString(s.getBytes())); // 通过当前java文件编码格式获得字节 ...
Java: Pattern and Matcher
In addition to the regular expression methods that are available in the String class (see String Regular Expressions), there are two classes that are specifically user for regular expression matching.
java.util.regex.Pattern precompiles regular expressions so they ...
通配符类型
1)一个简单的通配符类型实例:Pair<? extends Employee>,表示任何泛型Pair类型,它的类型参数是Employee的子类,像Pair<Manager>(其中Manager是Employee的子类),而不是Pair<String>,Pair<Date>等。
在这里有个关键的地方,即get方法的安全性和set方法的不安全性。
例如:
Pair<Manager> pair = new Pair<Manager>(a, b);
pair.getFirst是安全的,因为它返回的是E ...
前言
由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现。
当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯和本地数据库功能,又或者通过HTML5的WebSocket ...
Java泛型程序设计中的一些限制和局限:
1)不能用基本类型实例化类型参数
例如Pair<double>是不可能出现的,原因是类型擦除(见总结第3篇)之后,Pair会含有Object的域,但是Object不能存储double或者int等基本类型的值。
2)运行时类型查询只适用于原始类型
比如instanceof或者强制转换就涉及到,运行时类型检查,那意思就是说,
o instanceof Pair<String> 实际就是相当于 o instanceof Pair,String或者T之类的都被忽略。
Pari ...
泛型代码和虚拟机
1)类型变量的擦除
虚拟机并没有泛型类型的对象,所有的对象都是普通类,即使是我们看到的泛型类型(如Pair<String>),在编译后都成了普通的类型。任何时候,泛型类型都自动对应一个相应的原型(raw type),就是删除类型变量后的泛型类型名。
如何擦除类型变量呢。对于有限定类型的,如T extends Comparable 的删除T,并替换成限定的类型Comparable ;没有限定类型的则替换成Object。
注意到,如果有多个限定类型的呢,例如T extends Serializable & Comparable
...
对象方法的执行过程:
1).编译器查看对象的声明类型和方法名。假设调用x.f(param),对象x中可能会存在多个f方法,它们有不同的参数类型,比如f(int), f(String), f(double)等,编译器会列举x类中所有名为f的方法和其超类中访问 ...
类型变量的限定
一个场景,
class MyClass {
public static <T> T get(T[] a){
……
a[0].compareTo(.... // 数组a的元素调用compareTo方法进行比较
……
}
}
问题出现在这里,我们没办法保证T类型拥有方法compareTo;
但是,我们有一个办法解决,那就是让T实现Comparable接口。
现在,根据现有的api,我们可以使用T extends Comparable来达到限定的目的。
这时候,有 ...
在没有泛型的时候,我们使用ArrayList时对得到的结果要进行强制转换,因为得到的是Object类型,
例如:
ArrayList list = new ArrayList();
……
String str = (String) list.get(0);
在使用了泛型以后:
ArrayList<String> list = new ArrayList<String>();
……
String str = list.get(0);
这个地方,编译器通过ArrayList<String>知道了list中存储的是String类型的数 ...
在看完Java核心技术第八版第46页3.6.5章节,对代码单元和代码点再做一次总结。关于这俩概念的研究至此就算完成了。
有关代码单元和代码点的理解:
Char: 在java中是采用UTF-16编码的,也就是说,Char是代表一个字符单元。
代码单元:UTF-8中是用8个字节表示的,UTF-16中使用16个字节表示的等等。Java中采用的是UTF-16编码!
代码点:对应各种真正字符(char不是真正的字符,是代码单元)的Unicode编码。
一个代码点可能对应一对代码单元,如辅助字符。
因为以上原因,在Java中,不赞成使用Char类型,因为它并不能代表一个真正 ...
相关概念:
1.Java中的字符串String由字符(char)序列表示,他实现了“字符序列”接口CharSequence。
在Java中,char类型由UTF-16描述一个代码单元。
(引用Core Java第八版:In Java, the char type describes a code unit in the UTF-16 encoding.)
这里所说的Java中,说的是编译完的class文件,并非Java源代码文件,事实上,Java源代码文件的字符集格式是由我们自己定义的,比如GBK,UTF-8等。
2.在Java中字符类型由“代码单元”表示(code unit), ...
终于把unicode编码做了一个大致的了解了。
在学习的过程中知道了很多概念和相关的发展历史,对以前比较模糊的概念也有了比较深入的了解。
一些概念:
bom(byte order mark)用来区别是big endian(BE)还是little endian(LE)。区别的方法: 在UTF-16文件的头2个字节里做个标记: LE [0xFF, 0xFE], BE [0xFE, 0xFF]; 而在UTF-8中,标记[0xEF, 0xBB, 0xBF],可有可无的
Unicode的理解
UCS(universal character set)通用字符集
UTF-16
U ...
1.初始化一个空的节点header:
private transient Entry<E> header = new Entry<E>(null, null, null);
该节点在《算法导论》里应该叫“哨兵节点”。
算法描述:
一个栈stack,具有push和pop操作,其时间复杂度皆为O(1)。
设计算法max操作,求栈中的最大值,该操作的时间复杂度也要求为O(1)。
可以修改栈的存储方式,push,pop的操作,但是要保证O(1)的时间复杂度,空间时间复杂度无要求。
(来源:http://www.iteye.com/topic/1116956 感谢分享)
思考:
增加一个最大值栈maxEleStack来存储原始栈stack的最大值。
定义一个变量,例如maxEle来保存当前最大值。