艺术网站建设哈尔滨网站建设服务
web/
2025/9/28 7:35:00/
文章来源:
艺术网站建设,哈尔滨网站建设服务,百度引流推广,青岛网页制作网站1.包装类 1#xff09;包装类为基本数据类型提供了相应的引用数据类型。(基本数据类型-包装类)btye-Byte#xff0c;char-Character,short-Short,float-Floatint-Integer,double-Double,long-Long,boolean-Boolean 2#xff09;通过包装类的构造器来实现吧基本数据类型包装成…1.包装类 1包装类为基本数据类型提供了相应的引用数据类型。(基本数据类型-包装类)btye-Bytechar-Character,short-Short,float-Floatint-Integer,double-Double,long-Long,boolean-Boolean 2通过包装类的构造器来实现吧基本数据类型包装成包装类 3可以通过使用包装类的xxxValue()实例方法可以获得包装类对象中包装的基本数据类型。 package cn.it.lsl;public class Primitive2Wrapper {public static void main(String[] args) {boolean b true;Boolean b1 new Boolean(b);int a 5;Integer a1 new Integer(a);//把一个字符串包装成包装类 (Character类除外)Float f new Float(2.3);Boolean b2 new Boolean(false);boolean b3 b2.booleanValue();System.out.println(b3);int aa a1.intValue();System.out.println(aa);//当用一个字符串来创建Boolean对象时如果传入的是字符串true或或次字符串不同字母的大小写变化形式如True都将创建true对应的Boolean对象//当传入其他字符串时都会创建false对应的Boolean对象Boolean b4 new Boolean(true);boolean b5 b4.booleanValue();System.out.println(b5);}
} 4以上的转换比较麻烦在JDK1.5中提供了自动装箱和自动拆箱功能实现包装类跟基本数据类型的转换。自动装箱把基本数据类型直接赋值给对应的包装类自动拆箱把包装类直接赋值给对应的基本数据类型eg Integer a 5;
int b a; 5)包装类还可以实现基本类型和字符串之间的转换。把字符串类型的值转换为基本类型的值1利用parseXxx(String s)方法(Charcater除外)2利用包转类提供的构造器把基本类型转为字符串1String类的valueOf()2基本类型和进行连接运算 package cn.it.lsl;public class Primitive2Wrapper {public static void main(String[] args) { String str 23;int a1 Integer.parseInt(str);int a2 new Integer(str);System.out.println(a1);System.out.println(a2);String str2 String.valueOf(2.34f);System.out.println(str2);System.out.println(23);}
} 6包装类的比较1包装类可以与基本数据类型比较2因为包装类是引用数据类型所以只有两个包装类指向用一个对象的时候才会返回true Integer a new Integer(6);
System.out.println(6的包装类是否大于5.0: (a5.0));
System.out.println(2个包装类的比较 (new Integer(2) new Integer(2))); 7包装类比较的特殊情况自动装箱的结果 package cn.it.lsl;public class Primitive2Wrapper {public static void main(String[] args) {Integer a 2;Integer b 2;System.out.println(a b); //输出trueInteger a1 128;Integer b1 128;System.out.println(a1 b1); //输出false}
} 分析以上程序当两个2自动装箱后比较相等但是两个128自动装箱后就不相等。这是因为系统内部提供了一个缓存功能把-128~127之间的整数自动装箱成一个Integer时实际上直接指向对象的数值元素而-128~127范围外的整数自动装箱成Integer时总是新创建一个Integer实例。 2.toString()方法toString()是Object类里面的一个实例方法因为所有的类都是Object的子类所以所有的Java对象都具有toString()方法。当打印一个对象的时候总是会调用toString()方法。在缺省状态下其输出时类名、符号名、对象的hashCode()值。 package cn.it.lsl;public class ToStringWithout {int x;int y;public ToStringWithout(int x,int y){this.x x;this.y y;}public static void main(String[] args) {System.out.println(new ToStringWithout(23,33));}
} 输出cn.it.lsl.ToStringWithoutbb0d0d package cn.it.lsl;
//覆盖toString()方法
public class ToStringWith {int x;int y;public ToStringWith(int x, int y){this.x x;this.y y;}public String toString(){return ToStringWith[ x , y ];}public static void main(String[] args) {System.out.println(new ToStringWith(23,33));}
} 输出ToStringWith[23,33] 3.单例类有时候不允许自由创建一个类的实例而只允许该类创建一个对象这就是单例类。1创建单例类的方法1要把构造器使用private修饰这样就能避免其他类自由创建该类的实例。2提供一个public方法作为该类的访问点用于创建对象且该方法应该使用static修饰。因为调用该方法时候对象还不存在所以调用该方法的只能是类3该类中还要有一个缓存对象用于判断该类是否已经创建过对象了这样才能保证只创建一个对象该成员应该也要static修饰。 package cn.it.lsl;class Singleton{//使用一个变量来缓存已经创建的实例private static Singleton instance;private Singleton(){}public static Singleton getInstance(){/* 如果instance为null则还未创建Singleton对象* 如果instance不为null则表明已经创建了Singleton对象将不再创建* */if(instance null){instance new Singleton();}return instance;}
}public class SingletonTest {public static void main(String[] args) {Singleton s1 Singleton.getInstance();Singleton s2 Singleton.getInstance();System.out.println(s1 s2);}
} 4.比较和equals方法1若使用对两个引用类型变量进行比较他们必须指向同一个对象时判断才会是true。2当比较两个变量时基本类型时且都是数值类型时两个值相等就会返回true例如 int a 65;
float b 65.0f;
System.out.println(a b);
char c A;
System.out.println(a c); 3hello直接量和new String(hello)的区别1常量池的概念专门用于管理在编译期被确定并被保存在已编译的.class文件中的一些数据。2当Java程序直接使用形如hello的字符串直接了包括可以在编译时就计算出来的字符串值时JVM将会使用常量池来管理这些字符串。3当使用new String(hello)时JVM会先使用常量池来管理hello直接量再调用String类的构造器来创建一个新的String对象新创建的String对象被保存在堆内存中。也就是new String(hello)一共产生了两个对象。 package cn.it.lsl;public class EqualDemo {public static void main(String[] args) {String s1 你好;String s2 你;String s3 好;String s4 你 好; //s4后面的字符串值可以在编译期就确定下来String s5 s2 s3; //s5后面的字符串值不能再编译期就确定下来String s6 new String(你好);System.out.println(s1 s4);System.out.println(s1 s5);System.out.println(s1 s6);}
} JVM常量池保证相同的字符串直接量只有一个不会产生多个副本。 4equals方法1equals方法是Object类提供的一个实例方法因此所有引用变量都能调用该方法但是该方法判断该两个对象相等的标准与使用运算符没有区别同样是两个引用变量指向同一个对象时才会返回true。2String已经重写了Object的equals()方法String的equals()方法判断两个字符串是否相等的标准是只要两个字符串的字符序列相同就返回true。3Object默认提供的equals()只是比较对象的地址多数情况下我们需要重写equals()方法。 package cn.lsl;class Person{private String name;private String id;public Person() {super();// TODO Auto-generated constructor stub}public Person(String name, String id) {super();this.name name;this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getId() {return id;}public void setId(String id) {this.id id;}public boolean equals(Object obj){if(this obj)return true;//obj不为null,并且是Person类实例的时候if(obj ! null obj.getClass() Person.class){Person personObj (Person)obj;if(this.getId().equals(personObj.getId())){return true;}}return false;}}public class OverrideEqualsRight{public static void main(String[] args) {Person p1 new Person(刘小明,1213);Person p2 new Person(小明,1213);Person p3 new Person(小刘,1215);System.out.println(p1.equals(p2));System.out.println(p2.equals(p3));}
} 转载于:https://www.cnblogs.com/EvanLiu/archive/2013/06/12/3132648.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83205.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!