`

java中String使用注意

    博客分类:
  • java
 
阅读更多
1.String的null值或空值判断
if (name != null && !name.equals("")) { 
    //do something 
} 

或者 

if (!"".equals(name)) {//将""写在前头,这样,不管name是否为null,都不会出错。 
    //do something 
} 


2.使用+运算符连接时注意:

int a = 3;	    
String str = null;	    
System.out.println(a + str);

输出:
3null


String a = "3";
Object str = null;
System.out.println(a + str);

输出:
3null


int a = 3;
Object str = null;
System.out.println(a + str);

输出:编译出错。

引用
对于"a+b",是这么处理的,如果a和b就基本数据类型,则调用String.valueOf(a),String.valueOf(b),得到两个字符串直接连接起来;如果a和b是object类型包括String类型,则首先判断a和b是否等于null,如果等于则把把它们都转化成字符串“null”,再连接起来,如果不等于null,则调用String.valueOf(a),String.valueOf(b)得到两个字符串连接起来----其他各种情况同理

引用
引用类型的值有两种含义:引用所指对象的内存地址和引用所指对象的内容。
String str = null;
表示的是 str 所指对象的内存地址为 null;
String str = "Test";
表示的是 str 所指对象的内存地址是一个字符串对象的地址,并且这个字符串对象的toString方法返回"Test"。

// 例1
String str = null;
System.out.println(str);

例1打印时,JVM发现str所指对象的内存地址为null,JVM针对此类引用直接返回字符串"null"。
所以你看到的是 null 。

// 例2
String str = null;
System.out.println(str.toString());

例2打印时,JVM将调用str所指对象的toString()方法,但是str所指对象是null,所以JVM抛出NullPointException。
所以你看到的是抛出 NullPointException 异常。

// 例3
String str = null;
String str2 = "Test";
System.out.println(str + str2);

当out.println参数中含有+时,JVM内部使用了StringBuilder的append方法。也就是说:
例3可以分解为

String str = null;
String str2 = "Test";
StringBuilder sb = new StringBuilder();
sb.append(str);
sb.append(str2);
System.out.println(sb.toString());

所以你会看到 nullTest 的结果。

// 例4 引申(JVM如何进行 + - * / 等简单运算,自己思考吧。)
int i = 10;
int j = 20;
String str = null;
System.out.println(i + j + str);

例4会打印出什么呢?
例4可以分解为

int i = 10;
int j = 20;
String str = null;
StringBuilder sb = new StringBuilder();
int c = i + j;
sb.append(c);
sb.append(str);
System.out.println(sb.toString());

参考:
http://jonsion.iteye.com/blog/421958
http://topic.csdn.net/u/20091129/01/6F2604AB-AD57-4665-97E2-B1968387D509.html
分享到:
评论
1 楼 learningBird 2012-11-06  
明白了。谢谢。

相关推荐

    JAVA中关于String的一些注意点

    此文是JAVA中关于String的一些注意点,比较常用,希望能帮助到大家

    练习使用Java基本数据类型。使用Java的String类操作字符串和子串

    使用Java的String类操作字符串和子串。 实验内容: 1.写一个程序提示用户键入某一货币数量(以分为单位),该程序应计算出如何用最少量的1元,50分,10分和1分硬币得到该数目。如195分最少可以用一个1元硬币,1个50分...

    正确使用String类的几点注意

    java.lang.String类对大家来说最熟悉不过了,我们写java程序很少能不用String的。本文讲述如何正确的使用String,内容主要涉及初始化、串联和比较等操作。

    Java中String性能优化

    本文给大家分享的是如何在java中对String进行性能优化,使用String的时候需要有哪些注意事项呢,这就是今天我们要给大家总结分析的,有需要的小伙伴可以参考下。

    java.long.String.mm

    对于Java中String字符串的有关问题做下的思维导图,便于深化记忆,希望对你有帮助!注意:文件为.mm后缀建议下载freemind打开,免费的思维导图软件!

    java完美按格式化字符串String转sql.date

    按格式化字符串将 String 类型 转换为 sql.date 注意,非 util.date 可视化字符串例如 "yyyy-MM-dd HH:mm:ss

    史上最全Java面试题目大集合

    java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置...

    实验05 Java集合.doc

    3)把集合中的元素打印出来(使用迭代器Iterator) 2、编写程序练习List集合的基本使用: 1) 创建一个只能容纳String对象名为names的ArrayList集合; 2)按顺序往集合中添加5个字符串对象:"张三"、"李四"、"王五...

    String a="hello" String b="hello" a==b 返回true的问题分析

    //在java中有一个常量池,当创建String 类型的引用变量给它赋值时,java会到它的常量池中找"hello world"是不是在常量池中已存在。如果已经存在则返回这个常量池中的"hello world"的地址(在java中叫引用)给变量a 。...

    Java基础笔记,代码结构

    适合一些卖课程或者有学习过Java的人选。里面是Java一开始需要掌握的一些代码知识和常识,一些基础知识的笔记,Java代码的基本运用和代码里需要掌握的一些细节。

    Java中this与super的区别

    要注意的是this只能在类中的非静态方法中使用, 静态方法和静态的代码块中绝对不能出现this。this也可作为构造函数来使用。在后面可以看到 而什么是super,可以理解为是指向自己超(父)类对象的一个指针, 而...

    关于在Java代码中写Sql语句需要注意的问题

    近做程序,时不时需要自己去手动将sql语句直接写入到Java代码中,写入sql语句时,需要注意几个小问题。  先看我之前写的几句简单的sql语句,自以为没有问题,但是编译直接报错。  String str = insert into XXX...

    java中String的常见用法总结

    以下是关于string的七种用法,注意哦,记得要时常去查看java的API文档,那个里面也有很详细的介绍

    Java保留两位小数方法大全

    Java保留两位小数的各种方法(代码),还有浮点数、整数之间的转换几注意事项,比较适用。

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题08.String.mp4 │ Java面试题09.讲一下java中的集合.mp4 │ Java面试题10.ArrayList LinkedList.mp4 │ Java面试题11.HashMap和HashTable的区别.mp4 │ Java面试题12.实现一个拷贝文件的类使用字节流...

    北邮java作业

    实验1 类的定义、对象数组的使用 1. 定义一个学生类(Student), 属性有 1)非静态属性String studentNumber 2)非静态属性String studentName 3)非静态属性int markForMaths 4)非静态属性int markForEnglish 5)非...

    Thinking in Java简体中文(全)

    2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用...

    java联想(中文)

    2.2.3 Java中的数组 2.3 绝对不要清除对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 新建数据类型:类 2.4.1 字段和方法 2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用...

    java核心知识点整理

    5.Java不能为单独的方法,如main方法,定义局部常量,而只能为类定义常量,供该类的所有方法使用,所以,通常称之为类常量。如: class UsersConstants{ 2public static final double g = 32; public static final ...

    JAVA面试题最全集

    1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入bbbwlirbbb,输出...

Global site tag (gtag.js) - Google Analytics