- 浏览: 1151195 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (411)
- Java Foundation (41)
- AI/机器学习/数据挖掘/模式识别/自然语言处理/信息检索 (2)
- 云计算/NoSQL/数据分析 (11)
- Linux (13)
- Open Source (12)
- J2EE (52)
- Data Structures (4)
- other (10)
- Dev Error (41)
- Ajax/JS/JSP/HTML5 (47)
- Oracle (68)
- FLEX (19)
- Tools (19)
- 设计模式 (4)
- Database (12)
- SQL Server (9)
- 例子程序 (4)
- mysql (2)
- Web Services (4)
- 面试 (8)
- 嵌入式/移动开发 (18)
- 软件工程/UML (15)
- C/C++ (7)
- 架构Architecture/分布式Distributed (1)
最新评论
-
a535114641:
LZ你好, 用了这个方法后子页面里的JS方法就全不能用了呀
页面局部刷新的两种方式:form+iframe 和 ajax -
di1984HIT:
学习了,真不错,做个记号啊
Machine Learning -
赵师傅临死前:
我一台老机器,myeclipse9 + FB3.5 可以正常使 ...
myeclipse 10 安装 flash builder 4.6 -
Wu_Jiang:
触发时间在将来的某个时间 但是第一次触发的时间超出了失效时间, ...
Based on configured schedule, the given trigger will never fire. -
cylove007:
找了好久,顶你
Editable Select 可编辑select
关于String:
http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.3.3
关于String literals:
http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.5
http://wuaner.iteye.com/admin/blogs/1669121
StringTokenizer:
StringTokenizer类用来将字符串分解为标记。
StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用 String 的 split 方法或 java.util.regex 包。
全面理解Java中的String数据类型
http://www.iteye.com/topic/122206
JVM对String对象的处理
http://www.iteye.com/topic/38033
http://lukuijun.iteye.com/blog/339593
问题1:当执行完语句(1)时,在内存里面生成几个对象?它们是什么?在什么地方?
解答:当执行完语句(1)时,内存里面生成2个对象,它们的内容分别都是abc,注意:str不是对象,它是对象的地址,它叫做引用(reference),str指向new...生成的对象。换句话说,在java里面,当我们定义一个类的变量(如:String str;),它永远都是引用,不是对象。那么什么是对象呢?当我们用关键字new时,它生成出来的东西叫做对象。为什么是两个对象呢?首先它生成一个对象是abc,这个abc对象在什么地方呢?它在一个叫String Pool的字符串池里面,只有String有这样一个String池。String池是一个什么概念呢?我们知道,String类是一个不可变的类,一但它的内容确定,它就不能去更改了。当你去生成一个字符串对象的时候,它的执行流程是这样的:它首先在你的String Pool里面去找,看有没有一个内容为abc的对象存在,因为tring str = new String("abc")它是main方法的第一个语句,那么在刚开始执行的时候,String Pool里面是没有对象的。它发现String Pool里面没有abc这个对象,那么它首先把new String("abc")的括号里面的abc对象放到String Pool里面,接下来它执行new ...这行语句, 执行String的构造方法。我们知道new它生成一个对象,这个对象在什么地方呢?在java的堆里面。我们知道java的内存分为2部分,一个叫栈(Stack),一个叫堆(Heap)。那么new String("abc")时,它在堆(Heap)里面,生成一个内容为abc的这样一个对象。这样就造成了在String Pool里面一个叫abc的对象,堆里面也有一个叫abc的对象。我们这里用的是public String(String original)这个构造方法。jdk api是这样叙述的:
Initializes a newly created String object so that is represents the same sequence of characters as the argument;in other words,the newly created string is a copy of the argument string.Unless an explicit copy of original is needed,use of this constructor is unnecessary since Strings are immutable.(翻译:初始化一个新创建的String对象,表示一个与该参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的一个副本。由于 String 是不可变的,不必使用该构造方法,除非需要original的显式副本。)
问题2:当执行完语句(2)时,在内存里面一共有几个对象?它们是什么?在什么地方?
解答:当执行完语句(2)时,内存里面一个新的对象都没有生成。为什么这么说?当我们定义语句(2)的时候,如果我们用字符串的常量值(字面值)给str1赋值的话,那么首先java还是从String Pool里面去查找没有有内容为abc的这样一个对象存在,我们发现当我们执行完语句(1)的时候,StringPool里面已经存在了内容为abc的对象,那么就不会再在tring Pool里面去生成内容为abc的字符串对象了。而是会使用已经存在String Pool里面的内容为abc的字符串对象,并且会将str2这个引用指向String Pool里面的内容为abc的字符串对象,str2存放的是String Pool里面的内容为abc的字符串对像的地址。也就是说当你使用String str2 = "abc",即使用字符串常量("abc")给定义的引用(str2)赋值的话,那么它首先是在String Pool里面去找有没有内容为abc的字符串对象存在,如果有的话,就不用创建新的对象,直接引用String Pool里面已经存在的对象;如果没有的话,就在 String Pool里面去创建一个新的对象,接着将引用指向这个新创建的对象。所以,当执行完语句(2)时内存里面一共有2个对象,它们的内容分别都是abc, 在String Pool里面一个内容abc的对象,在堆里面有一个内容为abc的对象。
问题3:当执行完语句(3)时,在内存里面一共有几个对象?它们是什么?在什么地方?
解答:执行完语句(3)时,执行过程是这样的:它首先在String Pool里面去查找有没有内容为abc的字符串对象存在,发现有这个对象存在,它就不去创建 一个新的对象。接着执行new...,只要在java里面有关键字new存在,就表示它生成一个新的对象,new多少次,就生成多少个对象,而且新生成的对象都是在堆里面,所以它会在堆里面生成一个内容为abc的对象,并且将它的地址赋给了引用str2,str2就指向刚在堆里面生成的内容为abc的对象。所以,当执行完语句(3)时,内存里面一共有3个对象,其中包含了一个在String Pool里面内容为abc的字符串对象,另外在堆里面包含了两个内容为abc的字符串对象。
问题4:当执行完语句(4)(5)(6)后,它们的结果分别是什么?
解答:在java里面,对象用"=="永远比较的是两个对象的内存地址,换句话说,是比较"=="左右两边的两个引用是否指向同一个对象。对于java里面的8种原生数据类型来说,"=="比较的是它们的字面值是不是一样的;对应用类型来说,比较的是它们的内存地址是不是一样的。在语句(1)(2)(3)中,由于str、str1、str2指向不同的对象,它们的内存地址就不一样,因此可以说当执行完语句(4)(5)(6),它们返回的结果都是false。
问题5:当执行完语句(7)(8)(9)后,它们的结果分别是什么?
解答:jdk api里对方法public String intern()是这样叙述的:
Return a canonical representation for the string object.(翻译:返回字符串对象的标准化表示形式。)A pool of strings,initially empty,is maintained privately by the class String.(翻译:一个初始时为空的字符串池,它由类 String 私有地维护。) When the intern method is invoked,if the pool already contains a string equeal to this String objectas determined by the equals(Object) method,then the string from the pool is returned.Otherwise,this String object is added to the pool and a reference to the String object is returned.(翻译:当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。)If follows that for any two strings s and t,s.intern() == t.intern() is true if and only if s.equals(t) is true.(翻译:它遵循对于任何两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。)All literal strings and string-valued consrant expressions are interned.String literals and defined in §3.10.5 of the Java Language Specification.(翻译:所有字面值字符串和字符串赋值常量表达式都是内部的。字符串字面值在《Java Language Specification》的 §3.10.5 中已定义。) Returns:a string that has the same contents as this string,but is guaranteed ro be from a pool of unique strings. (翻译:返回一个字符串,内容与此字符串相同,但它保证来自字符串池中。) 当执行语句(7)时,首先,str这个对象指向的是堆中第一次new...生成的对象,根据jdk的api叙述,当调用 intern 方法时,如果String Pool已经包含一个等于此 String 对象的字符串(该对象由equals(Object)方法确定),则返回String Pool中的字符串对象的内存地址。因为String Pool中有内容为abc的对象,所以str.intern()返回的是String Pool中的内容为abc的字符串对象的内存地址,即是str1。而str==str1为false,所以,str == str.intern() 为false,即是语句(7)结果为false。而对于str1.intern(),它还是会首先检查String Pool中是否有内容为abc的对象,发现有,则将String Pool中内容为abc的对象的地址赋给str1.intern()方法的返回值,即str1.intern()的结果为str1。所以,str1 == str1.intern()的结果为true,,即是语句(8)结果为true。对于str.intern(),它首先检查String Pool中是否有内容为abc的对象,发现有,则将String Pool中内容为abc的对象的赋给str.intern()方法的返回值,即str.intern()的结果为str1。对于st2r.intern(),首先检查String Pool中是否有内容为abc的对象,发现有,则将String Pool中内容为abc的对象的地址赋给str2.intern()方法的返回值,即str2.intern()的结果为str1。所以,str.intern() == str2.intern()的结果为true,,即是语句(9)结果为true。因此,当执行完语句(7)(8)(9)后,它们的结果分别是false、true、true。
问题6:当执行完语句(13)(14)后,它们的结果分别是什么?
解答:执行完语句(13)结果为true,执行完语句(14)结果为false。分析:对于hello == "hel" + "lo",hello指向的是String Pool里面的内容为hello的字符串对象,对于"hel" + "lo",当"+"两边都是字面值(字符串常量)的时候,在执行完"+"之后,它接着去判断String Pool里面有没有内容为hello的字符串对象存在,有的话就直接返回String Pool里面的内容为hello的字符串对象的内存地址,所以,hello == "hel" + "lo"结果为true;对于hello == "hel" + lo,lo不是字面值,当"+"两边有一个不是字面值(字符串常量)的时候,那么"+"操作后又会在堆里面生成一个新的对象,也就是说hello的引用是指向String Pool里面的内容为hello的字符串对象,"hel" + lo的结果是返回在堆里面生成一个新的对象,一个在String Pool里面,一个在堆里面,当然为false了。
http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.3.3
引用
Instances of class String represent sequences of Unicode code points.
A String object has a constant (unchanging) value.对象不可变(不是引用不可变!);这一特性使它可以共享。
String literals (§3.10.5) are references to instances of class String.
The string concatenation operator + (§15.18.1) implicitly creates a new String object when the result is not a compile-time constant expression (§15.28).
A String object has a constant (unchanging) value.对象不可变(不是引用不可变!);这一特性使它可以共享。
String literals (§3.10.5) are references to instances of class String.
The string concatenation operator + (§15.18.1) implicitly creates a new String object when the result is not a compile-time constant expression (§15.28).
关于String literals:
http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.5
引用
A string literal consists of zero or more characters enclosed in double quotes. Characters may be represented by escape sequences (§3.10.6) - one escape sequence for characters in the range U+0000 to U+FFFF, two escape sequences for the UTF-16 surrogate code units of characters in the range U+010000 to U+10FFFF.
字符串字面值(如"Hello World")存放在方法区(Method Area)里;new出来的String对象存放在Heap里。具体分析见:
http://wuaner.iteye.com/admin/blogs/1669121
StringTokenizer:
StringTokenizer类用来将字符串分解为标记。
StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用 String 的 split 方法或 java.util.regex 包。
StringTokenizer st = new StringTokenizer(strCode, ","); String[] items = new String[st.countTokens()]; int count = 0; while (st.hasMoreTokens()) { items[count++] = st.nextToken(); }
全面理解Java中的String数据类型
http://www.iteye.com/topic/122206
JVM对String对象的处理
http://www.iteye.com/topic/38033
/** * * java JVM 对String对象的处理 * test String. intern() 方法 * */ public class TestStringIntern { /** * @param args */ public static void main(String[] args) { /* * 1.字面上的 "Hi" 字符串(字符串字面值string literal)将被自动 intern到虚拟机的字符串池中. * 2.不是字面上的String对象 通过调用 intern()方法,被intern到虚拟机的字符串池中. * * 虚拟机的字符串池由类 String 私有地维护。 */ String a = "Hi"; String b = "Hi"; String c = new String("Hi"); System.out.println(a == b);// true System.out.println(a == c);// false c = c.intern(); System.out.println(a == c);// true /* * 创建了两个对象 * 1.字面"AA" ——被intern到虚拟机字符串池中了。 * 2.new 操作符创建的 对象 * * 由AA != AA.intern()可以看出:String AA = new String("AA");创建了两个对象。 */ String AA = new String("AA"); System.out.println(AA == "AA");// false System.out.println(AA == AA.intern());// false System.out.println("AA" == AA.intern());// true /* * JAVA 规范中的例子: */ String hello = "Hello", lo = "lo"; System.out.print((hello == "Hello") + " "); //true System.out.print((hello == ("Hel"+"lo")) + " "); //true System.out.print((hello == ("Hel"+lo)) + " "); //false--lo为非literal的 System.out.println(hello == ("Hel"+lo).intern());//true } }
http://lukuijun.iteye.com/blog/339593
public class StringTest { public static void main(String[] args) { String str = new String("abc"); //语句(1) String str1 = "abc";//语句(2) String str2 = new String("abc");//语句(3) System.out.println(str == str1);//语句(4) System.out.println(str == str2);//语句(5) System.out.println(str1 == str2);//语句(6) System.out.println(str == str.intern());//语句(7) System.out.println(str1 == str1.intern());//语句(8) System.out.println(str.intern() == str2.intern());//语句(9) String hello = "hello";//语句(10) String hel = "hel";//语句(11) String lo = "lo";//语句(12) System.out.println(hello == "hel" + "lo");//语句(13) System.out.println(hello == "hel" + lo);//语句(14) } }
问题1:当执行完语句(1)时,在内存里面生成几个对象?它们是什么?在什么地方?
解答:当执行完语句(1)时,内存里面生成2个对象,它们的内容分别都是abc,注意:str不是对象,它是对象的地址,它叫做引用(reference),str指向new...生成的对象。换句话说,在java里面,当我们定义一个类的变量(如:String str;),它永远都是引用,不是对象。那么什么是对象呢?当我们用关键字new时,它生成出来的东西叫做对象。为什么是两个对象呢?首先它生成一个对象是abc,这个abc对象在什么地方呢?它在一个叫String Pool的字符串池里面,只有String有这样一个String池。String池是一个什么概念呢?我们知道,String类是一个不可变的类,一但它的内容确定,它就不能去更改了。当你去生成一个字符串对象的时候,它的执行流程是这样的:它首先在你的String Pool里面去找,看有没有一个内容为abc的对象存在,因为tring str = new String("abc")它是main方法的第一个语句,那么在刚开始执行的时候,String Pool里面是没有对象的。它发现String Pool里面没有abc这个对象,那么它首先把new String("abc")的括号里面的abc对象放到String Pool里面,接下来它执行new ...这行语句, 执行String的构造方法。我们知道new它生成一个对象,这个对象在什么地方呢?在java的堆里面。我们知道java的内存分为2部分,一个叫栈(Stack),一个叫堆(Heap)。那么new String("abc")时,它在堆(Heap)里面,生成一个内容为abc的这样一个对象。这样就造成了在String Pool里面一个叫abc的对象,堆里面也有一个叫abc的对象。我们这里用的是public String(String original)这个构造方法。jdk api是这样叙述的:
Initializes a newly created String object so that is represents the same sequence of characters as the argument;in other words,the newly created string is a copy of the argument string.Unless an explicit copy of original is needed,use of this constructor is unnecessary since Strings are immutable.(翻译:初始化一个新创建的String对象,表示一个与该参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的一个副本。由于 String 是不可变的,不必使用该构造方法,除非需要original的显式副本。)
问题2:当执行完语句(2)时,在内存里面一共有几个对象?它们是什么?在什么地方?
解答:当执行完语句(2)时,内存里面一个新的对象都没有生成。为什么这么说?当我们定义语句(2)的时候,如果我们用字符串的常量值(字面值)给str1赋值的话,那么首先java还是从String Pool里面去查找没有有内容为abc的这样一个对象存在,我们发现当我们执行完语句(1)的时候,StringPool里面已经存在了内容为abc的对象,那么就不会再在tring Pool里面去生成内容为abc的字符串对象了。而是会使用已经存在String Pool里面的内容为abc的字符串对象,并且会将str2这个引用指向String Pool里面的内容为abc的字符串对象,str2存放的是String Pool里面的内容为abc的字符串对像的地址。也就是说当你使用String str2 = "abc",即使用字符串常量("abc")给定义的引用(str2)赋值的话,那么它首先是在String Pool里面去找有没有内容为abc的字符串对象存在,如果有的话,就不用创建新的对象,直接引用String Pool里面已经存在的对象;如果没有的话,就在 String Pool里面去创建一个新的对象,接着将引用指向这个新创建的对象。所以,当执行完语句(2)时内存里面一共有2个对象,它们的内容分别都是abc, 在String Pool里面一个内容abc的对象,在堆里面有一个内容为abc的对象。
问题3:当执行完语句(3)时,在内存里面一共有几个对象?它们是什么?在什么地方?
解答:执行完语句(3)时,执行过程是这样的:它首先在String Pool里面去查找有没有内容为abc的字符串对象存在,发现有这个对象存在,它就不去创建 一个新的对象。接着执行new...,只要在java里面有关键字new存在,就表示它生成一个新的对象,new多少次,就生成多少个对象,而且新生成的对象都是在堆里面,所以它会在堆里面生成一个内容为abc的对象,并且将它的地址赋给了引用str2,str2就指向刚在堆里面生成的内容为abc的对象。所以,当执行完语句(3)时,内存里面一共有3个对象,其中包含了一个在String Pool里面内容为abc的字符串对象,另外在堆里面包含了两个内容为abc的字符串对象。
问题4:当执行完语句(4)(5)(6)后,它们的结果分别是什么?
解答:在java里面,对象用"=="永远比较的是两个对象的内存地址,换句话说,是比较"=="左右两边的两个引用是否指向同一个对象。对于java里面的8种原生数据类型来说,"=="比较的是它们的字面值是不是一样的;对应用类型来说,比较的是它们的内存地址是不是一样的。在语句(1)(2)(3)中,由于str、str1、str2指向不同的对象,它们的内存地址就不一样,因此可以说当执行完语句(4)(5)(6),它们返回的结果都是false。
问题5:当执行完语句(7)(8)(9)后,它们的结果分别是什么?
解答:jdk api里对方法public String intern()是这样叙述的:
Return a canonical representation for the string object.(翻译:返回字符串对象的标准化表示形式。)A pool of strings,initially empty,is maintained privately by the class String.(翻译:一个初始时为空的字符串池,它由类 String 私有地维护。) When the intern method is invoked,if the pool already contains a string equeal to this String objectas determined by the equals(Object) method,then the string from the pool is returned.Otherwise,this String object is added to the pool and a reference to the String object is returned.(翻译:当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(该对象由 equals(Object) 方法确定),则返回池中的字符串。否则,将此 String 对象添加到池中,并且返回此 String 对象的引用。)If follows that for any two strings s and t,s.intern() == t.intern() is true if and only if s.equals(t) is true.(翻译:它遵循对于任何两个字符串 s 和 t,当且仅当 s.equals(t) 为 true 时,s.intern() == t.intern() 才为 true。)All literal strings and string-valued consrant expressions are interned.String literals and defined in §3.10.5 of the Java Language Specification.(翻译:所有字面值字符串和字符串赋值常量表达式都是内部的。字符串字面值在《Java Language Specification》的 §3.10.5 中已定义。) Returns:a string that has the same contents as this string,but is guaranteed ro be from a pool of unique strings. (翻译:返回一个字符串,内容与此字符串相同,但它保证来自字符串池中。) 当执行语句(7)时,首先,str这个对象指向的是堆中第一次new...生成的对象,根据jdk的api叙述,当调用 intern 方法时,如果String Pool已经包含一个等于此 String 对象的字符串(该对象由equals(Object)方法确定),则返回String Pool中的字符串对象的内存地址。因为String Pool中有内容为abc的对象,所以str.intern()返回的是String Pool中的内容为abc的字符串对象的内存地址,即是str1。而str==str1为false,所以,str == str.intern() 为false,即是语句(7)结果为false。而对于str1.intern(),它还是会首先检查String Pool中是否有内容为abc的对象,发现有,则将String Pool中内容为abc的对象的地址赋给str1.intern()方法的返回值,即str1.intern()的结果为str1。所以,str1 == str1.intern()的结果为true,,即是语句(8)结果为true。对于str.intern(),它首先检查String Pool中是否有内容为abc的对象,发现有,则将String Pool中内容为abc的对象的赋给str.intern()方法的返回值,即str.intern()的结果为str1。对于st2r.intern(),首先检查String Pool中是否有内容为abc的对象,发现有,则将String Pool中内容为abc的对象的地址赋给str2.intern()方法的返回值,即str2.intern()的结果为str1。所以,str.intern() == str2.intern()的结果为true,,即是语句(9)结果为true。因此,当执行完语句(7)(8)(9)后,它们的结果分别是false、true、true。
问题6:当执行完语句(13)(14)后,它们的结果分别是什么?
解答:执行完语句(13)结果为true,执行完语句(14)结果为false。分析:对于hello == "hel" + "lo",hello指向的是String Pool里面的内容为hello的字符串对象,对于"hel" + "lo",当"+"两边都是字面值(字符串常量)的时候,在执行完"+"之后,它接着去判断String Pool里面有没有内容为hello的字符串对象存在,有的话就直接返回String Pool里面的内容为hello的字符串对象的内存地址,所以,hello == "hel" + "lo"结果为true;对于hello == "hel" + lo,lo不是字面值,当"+"两边有一个不是字面值(字符串常量)的时候,那么"+"操作后又会在堆里面生成一个新的对象,也就是说hello的引用是指向String Pool里面的内容为hello的字符串对象,"hel" + lo的结果是返回在堆里面生成一个新的对象,一个在String Pool里面,一个在堆里面,当然为false了。
发表评论
-
J2SE Evolution
2013-04-11 15:39 1188Java 7 New Features Java SE 7 ... -
未完 Java: IO & NIO(new I/O)
2013-01-11 20:56 2063适用: event and data-driven apps ... -
未完 java设计: naming convention | 命名规范
2012-11-20 16:45 2134应该遵循的规范: 类/接口/属性名,使用名词或形容词 ... -
未完 Java: enum 枚举
2012-11-19 20:29 1826http://stackoverflow.com/que ... -
Java多线程之 concurrent 并发包
2012-11-01 07:47 2028Java Tutorials -> Concur ... -
未完 Java Tips & Tricks & Notes
2012-09-12 10:00 1134Hidden Features of Java: h ... -
未完 Java Socket
2012-09-12 08:42 1025Java SocketJava SocketJava Sock ... -
Java For-each Loop & Iterable | 增强型For循环和Iterable接口
2012-09-11 21:50 2066增强型For循环没什么好说的,Just see link ... -
未完 Java Collections | 容器
2012-09-06 11:35 1842Sources: http://docs.oracle.com ... -
Java object Initialization (class Instantiation) | 对象的初始化(即类的实例化)
2012-09-03 09:12 3012类实例即对象 ... -
未完Java class&interfac 's Loading, Linking and Initializing | 类与接口的加载、链接和初始化
2012-08-31 19:01 1681JVM装载一个类的时候,首先检查他有没有父类,如果有父类则装载 ... -
未完 java Static 总结
2012-08-31 18:47 1408static可以用来修饰: 字段 Fields 方法 Meth ... -
未完 JVM Runtime Data Areas & Java Memory Model | 内存分配模型 & Java数据存储
2012-08-31 18:43 1892Java虚拟机内存分配模型 需精读:Chapter 5 of ... -
Java Data Types & Literals | 数据类型 和 字面量
2012-08-30 18:12 3954Java数据类型划分: OR http:// ... -
未完 Variables 变量 (Instance/Class/Local)
2012-08-29 10:59 1713Local/Instance/Class Variables ... -
未完 Regular Expressions | 正则表达式
2011-08-25 11:43 1532Extended Regular Expression ... -
java Date(util.Date/sql.Date/sql.Timestamp/sql.Time) & Oracle DATE Type 时分秒 精度问题
2011-05-17 09:32 3972遇到的问题描述: 数据库为Oracle,其jdbc驱动为ojd ... -
Java byte code (bytecode)
2011-05-04 02:55 3891keys: bytecode, byte code, opco ... -
Java Classloading Mechanism : ClassLoader & ASM & 动态字节码增强
2011-04-21 13:29 2431Setting the class path: http:// ... -
class literal & instance.getClass() & Class.forName(String className)
2011-04-20 12:33 2344常用的几种取得Class类实例的方式: 1 class lit ...
相关推荐
28. **字符串编码格式**:未完的描述可能涉及到字符串的其他编码格式,如UTF-8、GBK等,它们在处理多语言文本时非常关键,不同格式决定了字符如何存储和解码。 以上就是文件中提及的Python程序设计的一些基础知识点...
- **函数**: 提供了多种字符串处理函数,如 `char(num)` 和 `ichar(char)` 用于 ASCII 码的转换,`len(string)` 和 `len_trim(string)` 分别返回字符串长度和去除尾部空格后的长度,`index(string,key)` 返回 `key` ...
24. **字符串格式化**:%操作符、str.format()、f-string(Python3.6+)。 25. **去除字符串前后空格**:s.strip()。 26. **获取最后两个字符**:s[-2:]。 27. **GBK转UTF-8**:s.decode('GBK').encode('UTF-8')...
7. 字符串复制和内存分配(String Copy and Memory Allocation) int main(){ char a; char *str=&a; strcpy(str,"hello"); printf(str); return 0; } 没有为 str 分配内存空间,将会发生异常问题。出现在将...
- **选项A**: 正则表达式 `'^A-Z'` 仅匹配大写字母开头的字符串,并非全部字母。 - **选项B**: 正则表达式 `'^[0-9]'` 匹配以数字开头的字符串,不符合需求。 - **选项C**: 正则表达式 `'[:alpha:]'` 匹配任何字母...
23. **input()函数**:返回结果是字符串类型(String型)。 24. **Python函数**:C选项错误,Python中使用`def`关键字定义函数。 25. **循环累加**:此程序在i小于10时累加i对3取余的结果,因此输出的sum是A.sum=...
在这个例子中,我们定义了一个名为Person的消息类型,包含三个字段:name(字符串类型)、id(整型)和email(字符串类型)。每个字段都有一个唯一的标识符,用于在序列化和反序列化过程中定位字段。 protobuf提供...
String有`length()`方法来获取字符串的长度。 【Set中的去重】 Set通过equals()方法来判断元素是否重复,不使用`==`,因为`==`比较的是对象引用,而equals()比较的是对象内容。 【接口与抽象类】 接口可以继承接口...
**1.2.11 字符串(String)** 字符串是字符序列的特殊形式,在 Erlang 中通常表示为列表。手册中详细解释了字符串的定义、操作方法以及如何与列表进行转换。 **1.2.12 记录(Record)** 记录是一种具有命名字段的数据...
string longVariableName = "这是一段很长很长的字符串,它需要被拆分成两行以提高可读性"; ``` **1.3 单行语句** - 每行只包含一条语句,避免多条语句合并一行。 **示例** 正确做法: ```csharp int i = 0; int j...
=)被定义为比较 string 对象(而不是引用)的“值”(7.9.7 字符串相等运算符)。这使得对字符串相等性的测试更为直观。字符串为 string 类型并可写成两种形式,即用引号引起来和用 @ 引起来。用引号引起来的字符串...
7. 'string'表示字符串。 8. `!`用于调用操作系统命令。 9. `%`是单行注释符,`%{}`用于多行注释。 10. 乘法`*`通常不能省略,除非在复数表示中。 11. 除法`/`或`\`,两者可互换,表示除法。 12. 等号`=`用于赋值,...
9. **字符串处理**:涉及到模式匹配、最长公共前缀、回文串检测等,Java的String类提供了大量内置方法供使用。 10. **位操作**:在某些问题中,巧妙地使用位运算可以显著提升算法效率。 11. **系统设计问题**:...