
Java字符串及基本类
sun cat
只有让自己变得更优秀,才无所畏惧
展开
-
String、StringBuffer、StringBuilder区别
都是final类,都不允许被继承; String类长度是不可变的,StringBuffer和StringBuilder类长度是可以改变的; StringBuffer类是线程安全的,StringBuilder不是线程安全的;String类型和StringBuffer类型的主要性能区别:String是不可变的对象,因此每次在对String类进行改变的时候都会生成一个新的string对...原创 2019-07-08 22:42:36 · 114 阅读 · 0 评论 -
int、char、long各占多少字节数
4字节、2字节、8字节原创 2019-07-03 20:56:01 · 1362 阅读 · 0 评论 -
java中==和equals和hashCode的区别
在java中:1. ==是运算符,用于比较两个变量是否相等。2. equals,是Objec类的方法,用于比较两个对象是否相等,默认Object类的equals方法是比较两个对象的地址,跟==的结果一样。Object的equals方法如下:public boolean equals(Object obj) { return (this == obj);}3. hashCo...原创 2019-07-03 20:55:33 · 380 阅读 · 0 评论 -
静态代理和动态代理的区别,什么场景使用?
静态代理类优缺点优点:代理使客户端不需要知道实现类是什么,怎么做的,而客户端只需知道代理即可(解耦合),对于如上的客户端代码,newUserManagerImpl()可以应用工厂将它隐藏,如上只是举个例子而已。缺点:1)代理类和委托类实现了相同的接口,代理类通过委托类实现了相同的方法。这样就出现了大量的代码重复。如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需...原创 2019-07-08 22:52:42 · 2329 阅读 · 0 评论 -
Object类的equal和hashCode方法重写,为什么?
往HashMap添加元素的时候,需要先定位到在数组的位置(hashCode方法)。如果只重写了 equals 方法,两个对象 equals 返回了true,集合是不允许出现重复元素的,只能插入一个。此时如果没有重写 hashCode 方法,那么就无法定位到同一个位置,集合还是会插入元素。这样集合中就出现了重复元素了。那么重写的equals方法就没有意义了。 如下图:...原创 2019-07-08 22:51:10 · 1358 阅读 · 0 评论 -
utf-8编码中的中文占几个字节;int型几个字节?
utf-8的编码规则:如果一个字节,最高位为0,表示这是一个ASCII字符(00~7F)如果一个字节,以11开头,连续的1的个数暗示这个字符的字节数一个utf8数字占1个字节一个utf8英文字母占1个字节少数是汉字每个占用3个字节,多数占用4个字节。...原创 2019-07-08 22:49:38 · 7756 阅读 · 0 评论 -
string 转换成 integer的方式及原理
1.Integer.parseInt(String str)方法public static int parseInt(String s) throws NumberFormatException { //内部默认调用parseInt(String s, int radix)基数设置为10 return parseInt(s,10); }2.Inte...原创 2019-07-08 22:49:06 · 2771 阅读 · 0 评论 -
String为什么要设计成不可变的?
1.字符串常量池的需要字符串常量池(String pool,String intern pool, String保留池) 是Java堆内存中一个特殊的存储区域, 当创建一个String对象时,假如此字符串值已经存在于常量池中,则不会创建一个新的对象,而是引用已经存在的对象。2.允许String对象缓存HashCodeJava中String对象的哈希码被频繁地使用, 比如在has...原创 2019-07-08 22:45:55 · 159 阅读 · 0 评论 -
Java中String的了解
比如说 String 类被设计成 final 类型是出于哪些考虑?在Java中,被 final 类型修饰的类不允许被其他类继承,被 final 修饰的变量赋值后不允许被修改对于 Sting 类,官方有如下注释说明:String 字符串是常量,其值在实例创建后就不能被修改,但字符串缓冲区支持可变的字符串,因为缓冲区里面的不可变字符串对象们可以被共享。(其实就是使对象的引用发生了改变...原创 2019-07-08 22:44:55 · 213 阅读 · 0 评论 -
int与integer的区别
1.所占内存不同:Integer对象会占用更多的内存。Integer是一个对象,需要存储对象的元数据。但是int是一个原始类型的数据,所以占用的空间更少。2.类型及初始值:int 是基本类型,直接存数值,在类进行初始化时int类的变量初始为0;而integer是对象(Integer是int的封装类),用一个引用指向这个对象,Integer的变量则初始化为nullint和Int...原创 2019-07-08 22:38:54 · 832 阅读 · 0 评论