您的位置:首页 > 编程语言 > Java开发

java--String,toString(课堂)

2016-01-13 23:46 302 查看


publicclass
Strin_g {

publicstaticvoid
main(String[]args) {

Object object =new
Object();

System.out.println(object.equals(new
Object()));//false

String string ="11";

String string2 ="23";

String string3 ="23";

String string4 =new
String("23");

String string5 =new
String("23");

//equals是判断内容,比较都是用==。而==是判断内存地址

System.out.println(string.equals(string2));//false数值不相等

System.out.println(string2.equals(string3));//true数值相等

System.out.println(string4.equals(string5));//true,因为字符串池里有23,string类重写了Object
equals方法,用于判断内容是否相等

//而不是比较内存地址

System.out.println(string3.equals(string4));//true数值相等

String string6 ="222";

String string7 ="222"
+"2";//这里是三个对象,string7,“222”和"2"。如果把"222"变成"22",就输出true

System.out.println(string6.equals(string7));//false数值不相等

System.out.println(string6
== string7);//false内存地址(对象(空间))不相等

System.out.println(string4
== string5);//false对象(空间)不同

System.out.println(string2
== string3);////true指向的内存地址一样,都是放22的那个空间,只要数值相同,它就不会再次开辟空间来存放数值

System.out.println(string3
== string4);////false内存地址(对象(空间))不相等

//字符串池的用法:

//1、每弄出一个新的字符串,系统都会在字符串池中new一个对象

//2、再一次创建字符串对象时,系统都会在字符串池中寻找是否存在一个字符串跟要创建的

// 字符串内容一致,如果有,直接赋值,如果没有,则创建新的对象,然后放入字符串池中

//3、字符串 通过连接,都会改变成新的字符串, 原先不变,简单的说:

// 字符串操作的结果都是一个新的字符串

}

}

publicclass
Person {

public
Stringname;

publicintage;

public
Person(Stringname,intage)
{//shift+alt+s+o

this.name
= name;

this.age
= age;

}

@Override

public
String toString() {//shift+alt+s+s,用来测试传入的值是否正确,

//因为toString这个方法有返回值

return"Person
[name=" +name
+", age=" +age
+"]";

}

publicstaticvoid
main(String[]args) {

System.out.println(new
Person("小白",
10));

}

}

package com.lijie.lianxi1;

//////////// 面试陷阱 //////////////

publicclass
StringDem {

publicstaticvoid
main(String[]args) {

String string =new
String("123"); //创建string对象

System.out.println("change之前:"
+ string); //
123 打印

change(string);

//string = change(string);

System.out.println("change之后:"
+ string);//
123

Student student =new
Student();

student.name
= "lisi";

System.out.println("change之前student:"
+ student.name); //lisi

change(student);

System.out.println("change之后student:"
+ student.name);//zhangsan

}

publicstatic
String change(Stringstr){//这里相当于一个新对象,在方法区生成了一个新空间,

//存放着456,与string中存放着的123无关,所以改变str时,

//影响不到string的值,依然是123

return str
="456"; //
123456

}

publicstaticvoid
change(Studentstudent){

student.name
= "zhangsan";// 而这里张三的改变是在lisi的那个空间里,也就是student那里,所以原值改变

}

}

class Student{

public
Stringname;

}

引用大神的笔记:

将一个值转换成一个字符串有两种方法,一是使用toString()方法,

二是使用转型函数String()。下面是一些需要注意的问题:

  1,大多值都有toString()方法,null和undefined是没有的。

  2,对于字符串型的值也可以使用toString()方法,它会返回

该字符串的一个副本。

  3,toString()方法可以传递一个参数,表示数值的基数。

var t = 8; t.toString(2); //1000

var t = 8;
t.toString(2);  //1000


</pre><p><span style="font-family: Microsoft YaHei; font-size: 12px;">        默认情况下 参数是10。要说明的是对于非数值类型(boolean,string等)设置toString()的参数是无效的,</span></p><p></p><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"></div></div><ol class="dp-xml"><li class="alt"><span><span>var </span><span class="attribute">t</span><span> =</span><span class="attribute-value">"8"</span><span>;  </span></span></li><li><span>t.toString(2);  //8, 返回字符串的副本;  </span></li></ol></div><pre class="html" style="display: none;" name="code" code_snippet_id="115396" snippet_file_name="blog_20131217_1_1944988">var t ="8";
t.toString(2);  //8, 返回字符串的副本;


  4,任何值都可以使用String()方法。它的过程是这样的

    首先,如果值有toString()方法,那么则使用该方法(无参数)。

    其次,那就是该值没有toString()方法,那就是 null 返回 "null",undefined返回"undefined";

var a=null;
String(a); //"null"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: