In BBj 7.0 and higher, this method returns a canonical representation for the string object.

A pool of strings, initially empty, is maintained privately by the class String.

When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the BBjString::equals(Object) method, then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returned.

It follows that for any two strings s and t, s.intern() == t.intern() is true if and only if s.equals(t) is true.

All literal strings and string-valued constant expressions are interned. String literals are defined in section 3.10.5 of the The Java™ Language Specification.


Return Value






Return Value

Returns a string that has the same contents as this string, but is guaranteed to be from a pool of unique strings.




rem ' BBjString
print "BBjString sample code"

x! = "The quick brown fox jumps over the lazy dog"

print "x! = """,x!,""""
print "x!.charAt(0)=",x!.charAt(0); rem 'T'
print "x!.codePointAt(0)=",x!.codePointAt(0); rem 84
print "x!.codePointBefore(1)=",x!.codePointBefore(1); rem 84

l = x!.length()
print "x!.codePointCount(0,x!.length())=",x!.codePointCount(0,l); rem 43
print "x!.compareTo(""The"")=",x!.compareTo("The"); rem 40
print "x!.compareToIgnoreCase(""THE"")=",x!.compareToIgnoreCase("THE"); rem 40
print "x!.concat(""."")=",x!.concat(".")
print "x!.contains(""quick"")=",x!.contains("quick"); rem true
print "x!.contains(""slow"")=",x!.contains("slow"); rem false

sb! = new StringBuffer(x!)
print "StringBuffer sb! = """,sb!,""""
print "x!.contentEquals(sb!)=",x!.contentEquals(sb!); rem true
print "x!.endsWith(""dog"")=",x!.endsWith("dog"); rem true
print "x!.endsWith(""cat"")=",x!.endsWith("cat"); rem false
print "x!.equals(sb!)=",x!.equals(sb!); rem false
print "x!.equals(sb!.toString())=",x!.equals(sb!.toString()); rem true

y! = x!.toUpperCase()
print "y! = """,y!,""""
print "x!.equals(y!)=",x!.equals(y!); rem false
print "x!.equalsIgnoreCase(y!)=",x!.equalsIgnoreCase(y!); rem true
print "x!.getBytes()=",x!.getBytes()," {",x!.getBytes().getClass(),"}"
c! = java.lang.reflect.Array.newInstance(Character.TYPE,x!.length())
print "x!.getChars()=",java.util.Arrays.toString(c!)
print "x!.hashCode()=",x!.hashCode()
print "x!.indexOf(""q"")=",x!.indexOf("q"); rem 4
print "x!.intern()=",x!.intern()
print "x!.isEmpty()=",x!.isEmpty()
print "x!.lastIndexOf(""the"")=",x!.lastIndexOf("the"); rem 31
print "x!.length()=",x!.length(); rem 43
print "x!.matches(""^The.*"")=",x!.matches("^The.*"); rem true
print "x!.offsetByCodePoints(0,1)=",x!.offsetByCodePoints(0,1); rem 1
print "x!.regionMatches(1,x!,32,2)=",x!.regionMatches(1,x!,32,2); rem true
print "x!.replace(""dog"",""cat"")=",x!.replace("dog","cat")
print "x!.replaceAll("" "",""_"")=",x!.replaceAll(" ","_")
print "x!.replaceFirst("" "",""_"")=",x!.replaceFirst(" ","_")
print "x!.split("" "")=",java.util.Arrays.toString(x!.split(" "))
print "x!.startsWith(""The"")=",x!.startsWith("The"); rem true
print "x!.substring(4,9)=""",x!.substring(4,9),""""; rem quick
print "x!.subSequence(4,9)=""",x!.subSequence(4,9),""""; rem quick
print "x!.toCharArray()=",java.util.Arrays.toString(x!.toCharArray())
print "x!.toLowerCase()=",x!.toLowerCase()
print "x!.toUpperCase()=",x!.toUpperCase()
print "x!.trim()=""",x!.trim(),""""

See Also



See the BBj Object Diagram for an illustration of the relationship between BBj Objects.