String类

String类的特点:
字符串对象一旦被初始化就不会被改变。

字符串是最常用的类型之一,所以为了使用方便java就给封装成了对象方便使用
    1.  public static void stringDemo2() { 
    1.  String s = "abc";//创建一个字符串对象在常量池中。   
    1.   String s1 = new String("abc");//创建两个对象一个new一个字符串对象在堆内存和常量池中。
    1. System.out.println(s==s1);//false 

System.out.println(s.equals(s1));

string类中的equals复写Object中的equals建立了string类自己的判断字符串对象是否相同的依据。

其实就是比较字符串内容。

演示字符串定义的第一种方式,并明确字符串常量池的特点.

池中没有就建立,池中有,直接用。

    1.  private static void stringDemo1() {
    1.   String s = "abc";//"abc"存储在字符串常量池中。
    1. // s = "nba";
    1.   String s1 = "abc";
    1.   System.out.println(s==s1);//true
    1. // System.out.println("s="+s);
    1. /输出nabss1是俩个字符串对象,s一开始指向了abc,又指向了nbaabc不变说的是这个意思
    1. }

常量池:

因为String类型一旦被初始化是不能被改变的,所以存放在常量池,存放在常量池中还有个很重要的原因:String s1 = “abs”;String s2=“abs”,这时s2并没有新建立一个对象,而是指向了s1这个对象。也就是说每当创建一个字符串时,并不是直接创建而是先到常量池中区找需要创建的对象是否存在,如果存在就不会再创建了。常量池中的元素是不会重复的,这也就是所谓的享元模式,例如当已经存在abs,这时需要创建ahk,这时常量池中只会增加两个字符h和k,然后在从常量池中抽出ahk对象。

特点:

1、String是一种特殊的数据类型,可创建对象。

2、通过String创建的对象分别可存在于常量池和堆内存中

3、String是一个final的类型,即不可被继承修改,一经初始化就终生不可改变。(要改变也是改变的引用)

4、常量池中的数据可共享,即两个引用变量可指向同一个字符串池中的字符串

5、Java中的任何对象都可写成字符串的形式。

6、既然String是对象,那就不得不说说null和“”的区别了。null是String对象指向为空,就是没有指向。而“”代表的是String对象指向的是一个空的字符串。


匿名对象

匿名对象就是表示没有名字的对象,那么什么叫对象的名字了?

一个字符串就是一个string的匿名对象


String类的构造器

将字节数组或者字符数组转成字符串可以通过String类的构造函数完成。

    1.  private static void stringConstructorDemo2() { 
    1.   char[] arr = {'w','a','p','q','x'};//字符串转换成数组
    1.   String s = new String(arr,1,3);//字符的一部分转换成数组,从1角标取
    1.   System.out.println("s="+s); 输出s=apq
    1.  }

    1.  public static void stringConstructorDemo() {
    1.   String s = new String();
    1. //等效于String s = ""内容一样,地址不一样,都是指向空字符串; 但不等效String s = null;
    1. 一般用String s = "",就行了,能被共享,当需要用构造器传数据,需要用new
    1.  byte[] arr = {97,66,67,68}; 
    1. String s1 = new String(arr); //将数组变为字符,输出了abcd,编码转成了字节存储起来
    1.   System.out.println("s1="+s1);
    1.    } 


String类的方法(常见功能)
 按照面向对象的思想对字符串进行功能分类

 字符串常见的操作方法:(String str = "hello java")

1、获取。

1.1 字符串中的包含的字符数,也就是字符串的长度。

int length():获取长度。str.length()//结果为10

1.2 根据位置获取位置上某个字符。

char charAt(int index)://charAt(1),结果是e

1.3 根据字符获取该字符在字符串中位置。//indexOf(’l‘)结果是2

int indexOf(int ch):返回的是ch在字符串中第一次出现的位置。

int indexOf(int ch, int fromIndex) :从fromIndex指定位置开始,获取ch在字符串中出现的位置。

int indexOf(String str):返回的是str在字符串中第一次出现的位置。

int indexOf(String str, int fromIndex) :从fromIndex指定位置开始,获取str在字符串中出现的位置。

int lastIndexOf(int ch) :从后往前找,但是字符串中的角标是没有变的。

 

 
System.out.println("substring:"+s.substring(2,4));//cd

   
2、判断。
2.1 字符串中是否包含某一个子串。
boolean contains(str):
特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。所以,也可以用于对指定判断是否包含。if(str.indexOf("aa")!=-1)
而且该方法即可以判断,有可以获取出现的位置。
2.2 字符中是否有内容。
boolean isEmpty(): 原理就是判断长度是否为0. 
2.3 字符串是否是以指定内容开头。
boolean startsWith(str);
2.4 字符串是否是以指定内容结尾。
boolean endsWith(str);
2.5 判断字符串内容是否相同。复写了Object类中的equals方法。
boolean equals(str);
2.6 判断内容是否相同,并忽略大小写。
boolean equalsIgnoreCase();
   

3、转换。
3.1 将字符数组转成字符串。
构造函数:String(char[])
 String(char[],offset,count):将字符数组中的一部分转成字符串。
静态方法:
static String copyValueOf(char[]);
static String copyValueOf(char[] data, int offset, int count) 
static String valueOf(char[]):
3.2 将字符串转成字符数组。**
char[] toCharArray():
3.3 将字节数组转成字符串。
String(byte[])
String(byte[],offset,count):将字节数组中的一部分转成字符串。
3.4 将字符串转成字节数组。
byte[]  getBytes():
3.5 将基本数据类型转成字符串。
static String valueOf(int)
static String valueOf(double)
//3+"";//String.valueOf(3);
特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
4,替换
String replace(oldchar,newchar);
5,切割
String[] split(regex);
6,子串。获取字符串中的一部分。
String substring(begin);
String substring(begin,end);
7,转换,去除空格,比较。
7.1 将字符串转成大写或则小写。
String toUpperCase();
String toLowerCase();
7.2 将字符串两端的多个空格去除。
String trim();
7.3 对两个字符串进行自然顺序的比较。
int compareTo(string);//大于返回正数,等于返回0,小于返回负数,且值为ASSII值之差。


 
    1.  private static void stringMethodDemo_4() {
    1.  
    1.  System.out.println("abc".compareTo("aqz"));
    1.  }
    1.   stringMethodDemo_4();
    1.  }

    1. public class StringObjectDemo {
    1. public static void main(String[] args) {
    1. // String s1 = "abc";
    1. // String s2 = "abc";
    1. // intern():对字符串池进行操作的
    1. String s1 = new String("abc");
    1. String s2 = s1.intern();
    1. System.out.println(s1 == s2); // false
    1. }
    1. }
 
    1. public class StringDemo {
    1. public static void main(String[] args) {
    1. String str = "asdfghjaszxsa.java";
    1. method_get(str);
    1. print("------------------------------------------");
    1. method_is(str);
    1. print("------------------------------------------");
    1. method_transform(str);
    1. print("------------------------------------------");
    1. method_replace(str);
    1. print("------------------------------------------");
    1. method_split(str);
    1. print("------------------------------------------");
    1. method_sub(str);
    1. print("------------------------------------------");
    1. method_change();
    1. }
    1. /*
    1. * String获取方法 凡是获取的字符或者是字符串不存在,就返回-1
    1. */
    1. private static void method_get(String str) {
    1. // 获取字符串的长度
    1. int length = str.length();
    1. print("length: " + length);
    1. // 根据位置获取位置上的某个字符
    1. char ch = str.charAt(1);
    1. print("ch: " + ch);
    1. // 根据字符获取该字符在字符串中的位置
    1. int index = str.indexOf("index: " + 'a');// 获取该字符第一次出现的位置
    1. print("index: " + index);
    1. // int indexOf(int ch, int fromIndex) :从fromIndex指定位置开始,获取ch在字符串中出现的位置。
    1. int indexf = str.indexOf('a', 2);
    1. print("indexf: " + indexf);
    1. // int indexOf(String str):返回的是str在字符串中第一次出现的位置。
    1. int indexs = str.indexOf("as");
    1. print("indexs: " + indexs);
    1. // int indexOf(String str, int fromIndex)
    1. // :从fromIndex指定位置开始,获取str在字符串中出现的位置。
    1. int indexsf = str.indexOf("as", 3);
    1. print("indexsf: " + indexsf);
    1. // int lastIndexOf(int ch)
    1. int indexlast = str.lastIndexOf('a');
    1. print("indexlast: " + indexlast);
    1. }
    1. /*
    1. * String中的判断
    1. */
    1. private static void method_is(String str) {
    1. // 字符串中是否包含某一个子串
    1. /*
    1. * 特殊之处:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。
    1. * 所以,也可以用于对指定判断是否包含。 if(str.indexOf("aa")!=-1) 而且该方法即可以判断,有可以获取出现的位置。
    1. */
    1. boolean iscon = str.contains("asd");
    1. print("iscon: " + iscon);
    1. // 字符中是否有内容。boolean isEmpty(): 原理就是判断长度是否为0.
    1. boolean isemp = str.isEmpty();
    1. print("isemp: " + isemp);
    1. // 字符串是否是以指定内容开头。boolean startsWith(str);
    1. boolean start = str.startsWith("asd");
    1. boolean startoffset = str.startsWith("sd", 1);
    1. print("start: " + start);
    1. print("startoffset: " + startoffset);
    1. // 字符串是否是以指定内容结尾。boolean endsWith(str);
    1. boolean end = str.endsWith(".java");
    1. print("end: " + end);
    1. // 判断字符串内容是否相同。复写了Object类中的equals方法。boolean equals(str);
    1. boolean equal = str.equals("asdfghjaszxsa.java");
    1. print("equal: " + equal);
    1. // 判断内容是否相同,并忽略大小写。boolean equalsIgnoreCase();
    1. boolean equ = "AASD".equalsIgnoreCase("Aasd");
    1. print("equ: " + equ);
    1. }
    1. /*
    1. * 转换
    1. */
    1. private static void method_transform(String str) {
    1. char[] chs = { 'a', 's', 'd', 'f', 'g' };
    1. byte[] bts = { 'a', 's', 'd', 'f', 'g' };
    1. // 将字符数组转成字符串
    1. String trChStr = new String(chs);
    1. String trChStrO = new String(chs, 1, 3);
    1. print("trChStr: " + trChStr + "....trChStrO: " + trChStrO);
    1. String copyvalueof = String.copyValueOf(chs);
    1. print("copyvalueof: " + copyvalueof);
    1. // 将字符串转成字符数组****
    1. char[] tochar = str.toCharArray();
    1. for (int x = 0; x < tochar.length; x++) {
    1. print("char[" + x + "] = " + tochar[x]);
    1. }
    1. // 将字节数组转成字符串。
    1. String trBtStr = new String(bts);
    1. String trBtStrO = new String(bts, 1, 3);
    1. print("trBtStr: " + trBtStr + "....trBtStrO: " + trBtStrO);
    1. // 将字符串转成字节数组。byte[] getBytes():
    1. // 特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
    1. byte[] getBts = str.getBytes();
    1. for (int x = 0; x < getBts.length; x++) {
    1. print("byte[" + x + "] = " + getBts[x]);
    1. }
    1. // 将基本数据类型转成字符串。static String valueOf(数据类型)
    1. // 3+"";//String.valueOf(3);
    1. String num = String.valueOf(2);
    1. print("num: " + num);
    1. }
    1. /*
    1. * 替换
    1. */
    1. private static void method_replace(String str) {
    1. // 如果要替换的字符不存在,返回的还是原串。
    1. String newStr = str.replace('a', 'm');// 替换掉所有的该字符
    1. print(str);
    1. print(newStr);
    1. String newSt = str.replace("asd", "qqq");
    1. print(str);
    1. print(newSt);
    1. }
    1. /*
    1. * 切割
    1. */
    1. private static void method_split(String str) {
    1. // String[] split(regex);
    1. String[] strs = str.split("s");
    1. for (int x = 0; x < strs.length; x++) {
    1. print("String[" + x + "] = " + strs[x]);
    1. }
    1. }
    1. /*
    1. * 获取字符串中的一部分
    1. */
    1. private static void method_sub(String str) {
    1. print(str.substring(2));// 从指定位置开始到结尾。如果角标不存在,会出现字符串角标越界异常。
    1. print(str.substring(2, 4));// 包含头,不包含尾。s.substring(0,s.length());
    1. }
    1. /*
    1. * 转换,去除空格,比较。
    1. */
    1. private static void method_change() {
    1. String s = " Hello Java ";
    1. print(s.toLowerCase());// 转小写
    1. print(s.toUpperCase());// 转大写
    1. print(s.trim());// 去空格
    1. // 对两个字符串进行自然顺序的比较
    1. String s1 = "aaa";
    1. String s2 = "aaa";
    1. print(s1.compareTo(s2));// 大于返回正数,小于返回负数,相等返回0
    1. }
    1. private static void print(Object obj) {
    1. System.out.println(obj);
    1. }

System.out.println("abc".concat("kk"));连接字符串,没什么用,直接连就行
System.out.println("abc"+"kk");

System.out.println(String.valueOf(4)+1);//41将基本数据类型变为字符串,再连接
System.out.println(""+4+1);和上一样

练习
 * 1,给定一个字符串数组。按照字典顺序进行从小到大的排序。 
 * {"nba","abc","cba","zz","qq","haha"}
 *
 * 思路:
 * 1,对数组排序。可以用选择,冒泡都行。
 * 3,问题:以前排的是整数,比较用的比较运算符,可是现在是字符串对象。
 *   字符串对象怎么比较呢?对象中提供了用于字符串对象比较的功能。
 
    1. public class StringTest_1 {
    1. public static void main(String[] args) {
    1. String[] arr = { "nba", "abc", "cba", "zz", "qq", "haha" };
    1. printArray(arr); // 原来的
    1. sortString(arr);
    1. printArray(arr); // 比较后的
    1. }
    1. public static void sortString(String[] arr) {
    1. for (int i = 0; i < arr.length - 1; i++) {
    1. for (int j = i + 1; j < arr.length; j++) {
    1. if (arr[i].compareTo(arr[j]) > 0)// 字符串比较用compareTo方法
    1. swap(arr, i, j);
    1. }
    1. }
    1. }
    1. private static void swap(String[] arr, int i, int j) {
    1. String temp = arr[i];
    1. arr[i] = arr[j];
    1. arr[j] = temp;
    1. }
    1. public static void printArray(String[] arr) {
    1. System.out.print("[");
    1. for (int i = 0; i < arr.length; i++) {
    1. if (i != arr.length - 1)
    1. System.out.print(arr[i] + ", ");
    1. else
    1. System.out.println(arr[i] + "]");
    1. }
    1. }
    1. }
2,一个子串在整串中出现的次数。
 * "nbaernbatynbauinbaopnba"
 * 思路:
 * 1,要找的子串是否存在,如果存在获取其出现的位置。这个可以使用indexOf完成。
 * 2,如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找该子串,
 * 而剩余字符串的起始位是出现位置+子串的长度.
 * 3,以此类推,通过循环完成查找,如果找不到就是-1,并对 每次找到用计数器记录。
    1. public class StringTest_2 {
    1. public static void main(String[] args) {
    1. String str = "nbaernbatnbaynbauinbaopnba";
    1. String key = "nba";
    1. int count = getKeyStringCount_2(str, key);
    1. System.out.println("count=" + count);
    1. }
    1. public static int getKeyStringCount_2(String str, String key) {
    1. int count = 0;
    1. int index = 0;
    1. while ((index = str.indexOf(key, index)) != -1) {
    1. index = index + key.length();
    1. count++;
    1. }
    1. return count;
    1. }
    1. /**
    1. * 获取子串在整串中出现的次数。
    1. */
    1. public static int getKeyStringCount(String str, String key) {
    1. // 1,定义计数器。
    1. int count = 0;
    1. // 2,定义变量记录key出现的位置。
    1. int index = 0;
    1. while ((index = str.indexOf(key)) != -1) {
    1. str = str.substring(index + key.length());//这个前面的str别不写
    1. count++;
    1. }
    1. return count;
    1. }
    1. }

 * 3,两个字符串中最大相同的子串。
 * "qwerabcdtyuiop"
 * "xcabcdvbn"
 *
 * 思路:
 * 1,既然取得是最大子串,先看短的那个字符串是否在长的那个字符串中。
 * 如果存在,短的那个字符串就是最大子串。
 * 2,如果不是呢,那么就将短的那个子串进行长度递减的方式去子串,去长串中判断是否存在。
 * 如果存在就已找到,就不用在找了。
 
    1. public class StringTest_3 {
    1. public static void main(String[] args) {
    1. String s1 = "qwerabcdtyuiop";
    1. String s2 = "xcabcdvbn";
    1. String s = getMaxSubstring(s2, s1);
    1. System.out.println("s=" + s);
    1. }
    1. /**
    1. * 获取最大子串
    1. *
    1. * @param s1
    1. * @param s2
    1. * @return
    1. */
    1. public static String getMaxSubstring(String s1, String s2) {
    1. String max = null, min = null;
    1. max = (s1.length() > s2.length()) ? s1 : s2;
    1. min = max.equals(s1) ? s2 : s1;
    1. System.out.println("max=" + max);
    1. System.out.println("min=" + min);
    1. for (int i = 0; i < min.length(); i++) {
    1. for (int a = 0, b = min.length() - i; b != min.length() + 1; a++, b++) {
    1. String sub = min.substring(a, b);
    1. // System.out.println(sub);
    1. if (max.contains(sub))
    1. return sub;
    1. }
    1. }
    1. return null;
    1. }
    1. }

 * 4,模拟一个trim功能一致的方法。去除字符串两端的空白
 * 思路:
 * 1,定义两个变量。
 * 一个变量作为从头开始判断字符串空格的角标。不断++。
 * 一个变量作为从尾开始判断字符串空格的角标。不断--。
 * 2,判断到不是空格为止,取头尾之间的字符串即可。
 
    1. public class StringTest_4 {
    1. public static void main(String[] args) {
    1. String s = " ab c ";
    1. s = myTrim(s);
    1. System.out.println("-" + s + "-");
    1. }
    1. public static String myTrim(String s) {
    1. int start = 0, end = s.length() - 1;
    1. while (start <= end && s.charAt(start) == ' ') {
    1. start++;
    1. }
    1. while (start <= end && s.charAt(end) == ' ') {
    1. end--;
    1. }
    1. return s.substring(start, end + 1);
    1. }
    1. }


练习五:将字符串反转。  
    1. /*
    1. 思路:
    1. 1,将字符串变成数组。
    1. 2,对数组反转。
    1. 3,将数组变成字符串。
    1. */
    1. public class ReverseString {
    1. public static void main(String[] args) {
    1. String str = "shag klh";
    1. String out = reverseString(str);
    1. System.out.println(out);
    1. }
    1. /*
    1. * 将字符串反转
    1. */
    1. private static String reverseString(String str) {
    1. // 将字符串变成数组
    1. char[] chs = str.toCharArray();
    1. // 将数组反正,也就是收尾调换
    1. reverseArray(chs);
    1. return new String(chs);
    1. }
    1. private static void reverseArray(char[] chs) {
    1. char temp;
    1. for (int start = 0, end = chs.length - 1; start < end; start++, end--) {
    1. temp = chs[start];
    1. chs[start] = chs[end];
    1. chs[end] = temp;
    1. }
    1. }


StringBuffer

* StringBuffer:就是字符串缓冲区。

* 用于存储数据的容器。

* 特点:

* 1,长度的可变的。

* 2,可以存储不同类型数据。

* 3,最终要通过toString方法变成字符串进行使用。

* 4,可以对字符串进行修改。

Stringbuffer类:可以被修改的字符序列

* 既然是一个容器对象。应该具备什么功能呢?

1、存储。
StringBuffer append():将指定数据作为参数添加到已有数据结尾处。不支持byte和char,需要对其进行转换才能操作。
StringBuffer insert(index,数据):可以将数据插入到指定index位置。
2、删除。
StringBuffer delete(start,end):删除缓冲区中的数据,包含start,不包含end。
StringBuffer deleteCharAt(index):删除指定位置的字符。
3、获取。
char charAt(int index) 
int indexOf(String str) 
int lastIndexOf(String str) 
int length() 
String substring(int start, int end) 
4、修改。
StringBuffer replace(start,end,string);
void setCharAt(int index, char ch) ;
5、反转。
StringBuffer reverse();
6、将缓冲区中指定数据存储到指定字符数组中。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)//第一个参数是说StringBuffer 从哪开始取值,第二个就是在哪结束啦,第三个参数是插入到哪个数据,第四个是说从数组中的哪个索引开始插入。

*

* 增删改查  C(create)U(update)R(read)D(delete)

*

    1. public class StringBufferDemo {
    1. public static void main(String[] args) {
    1. bufferMethodDemo_2();
    1. }
    1. private static void bufferMethodDemo_2() {
    1. StringBuffer sb = new StringBuffer("abce");
    1. // sb.delete(1, 3);//ae
    1. // 清空缓冲区
    1. // sb.delete(0,sb.length());
    1. // sb = new StringBuffer();
    1. // sb.replace(1, 3, "nba");
    1. // sb.setCharAt(2, 'q');
    1. // sb.setLength(10);
    1. // System.out.println("sb:"+sb);
    1. // System.out.println("len:"+sb.length());
    1. System.out.println(sb.reverse());
    1. }
    1. private static void bufferMethodDemo_1() {
    1. StringBuffer sb = new StringBuffer("abce");
    1. // sb.append("xixi");
    1. sb.insert(2, "qq");
    1. System.out.println(sb.toString());
    1. }
    1. public static void bufferMethodDemo() {
    1. // 创建缓冲区对象。
    1. StringBuffer sb = new StringBuffer();
    1. sb.append(4).append(false);// .append("haha");输出4falsehahh,连起来了
    1. sb.insert(1, "haha");//4hahhfalse
    1. // sb.append(true);//4hahhfalsetru,一个一个append和.append效果一样
    1. System.out.println(sb);
    1. }
    1. }

StringBuilder

* jdk1.5以后出现了功能和StringBuffer一模一样的对象。就是StringBuilder

* 不同的是:

* StringBuffer是线程同步的。通常用于多线程。

* StringBuilder是线程不同步的。通常用于单线程。 它的出现提高效率。

*

* jdk升级:

* 1,简化书写。

* 2,提高效率。

* 3,增加安全性。

eg:

    1. public class StringBuilderTest {
    1. public static void main(String[] args) {
    1. int[] arr = { 3, 1, 5, 3, 8 };
    1. String s = arrayToString_2(arr);
    1. System.out.println(s);
    1. }
    1. public static String arrayToString_2(int[] arr) {
    1. StringBuilder sb = new StringBuilder();
    1. sb.append("[");
    1. for (int i = 0; i < arr.length; i++) {
    1. if (i != arr.length - 1)
    1. sb.append(arr[i] + ", ");
    1. else
    1. sb.append(arr[i] + "]");
    1. }
    1. return sb.toString();
    1. }
    1. /**
    1. *
    1. * 将一个int数组变成字符串。
    1. */
    1. public static String arrayToString(int[] arr) {
    1. String str = "[";
    1. for (int i = 0; i < arr.length; i++) {
    1. if (i != arr.length - 1)
    1. str += arr[i] + ", ";
    1. else
    1. str += arr[i] + "]";
    1. }
    1. return str;
    1. }
    1. }
    1. public class StringBuilderTest {
    1. public static void main(String[] args) {
    1. StringBuilder s1 = new StringBuilder("hello");
    1. StringBuilder s2 = new StringBuilder("java");
    1. show(s1, s2);
    1. System.out.println(s1 + "......." + s2);
    1. }
    1. private static void show(StringBuilder s1, StringBuilder s2) {
    1. s1.append(s2);
    1. s1 = s2;
    1. //输出hellojava.......java
    1. }
    1. }


基本数据类型对象包装类

* 为了方便操作基本数据类型值,将其封装成了对象,在对象中定义了属性和行为丰富了该数据的操作。

* 用于描述该对象的类就称为基本数据类型对象包装类。

* byte Byte

* short Short

* int Integer

* long Long

* float Float

* double Double

* char Character

* boolean Boolean

* 该包装对象主要用基本类型和字符串之间的转换。

  • 基本类型--->字符串
  1. 基本类型数值+""
  2. 用String类中的静态方法valueOf(基本类型数值);
  3. 用Integer的静态方法valueO(基本类型数值);
  • 字符串--->基本类型
  1. 使用包装类中的静态方法   xxx parseXxx("xxx类型的字符串");*****

* int parseInt("intstring");

* long parseLong("longstring");

* boolean parseBoolean("booleanstring");

* 只有Character没有parse方法

2.如果字符串被Integer进行对象的封装。

* 可使用另一个非静态的方法,intValue();

* 将一个Integer对象转成基本数据类型值。

    1. System.out.println(Integer.MAX_VALUE);
    1. System.out.println(Integer.toBinaryString(-6));
    1. int num = 4;
    1. Integer i = new Integer(5);
    1. int x = Integer.parseInt("123");
    1. System.out.println(Integer.parseInt("123")+1);
    1. Integer i = new Integer("123");
    1. );
    1. System.out.println(a==b);//flase
    1. System.out.println(a.equals(b));//ture
    1. // System.out.println(3>3);
    1. System.out.println(a.compareTo(b));//0,内容相同,地址不同

* 整数具备不同的进制体现。

*

* 十进制-->其他进制。

* toBinaryString

* toOctalString

* toHexString

*

* 其他进制-->十进制。

* parseInt("string",radix)

*

十进制-->其他进制。

    1.   System.out.println(Integer.toBinaryString(60));
    1.   System.out.println(Integer.toOctalString(60));
    1.   System.out.println(Integer.toHexString(60));
    1. // System.out.println(Integer.toString(60,16));
其他进制-->十进制。
    1. class IntegerDemo
    1. {
    1. public static void sop(String str)
    1. {
    1. System.out.println(str);
    1. }
    1. public static void main(String[] args)
    1. {
    1. //整数类型的最大值。
    1. //sop("int max :"+Integer.MAX_VALUE);
    1. // 将一个字符串转成整数。
    1. int num = Integer.parseInt("123");//必须传入数字格式的字符串。
    1. //long x = Long.parseLong("123");
    1. // sop("num="+(num+4));
    1. // sop(Integer.toBinaryString(-6));
    1. // sop(Integer.toHexString(60));
    1. int x = Integer.parseInt("3c",16); //后面传入前面是什么进制的
    1. sop("x="+x);
自动装箱拆箱
    1. class IntegerDemo1   
    1. {  
    1.     public static void main(String[] args)   
    1.     {  
    1.           
    1. //      Integer x = new Integer(4);  
    1.   
    1.         Integer x = 4;//自动装箱。//new Integer(4)  
    1.   
    1.         x = x/* x.intValue() */ + 2;//x+2:x 进行自动拆箱。变成成了int类型。和2进行加法运算  
    1.                     //再将和进行装箱赋给x  
    1.   
    1.         Integer m = 128;  
    1.         Integer n = 128;  
    1.   
    1.         sop("m==n:"+(m==n));//结果为false  
    1.   
    1.         Integer a = 127;  
    1.         Integer b = 127;  
    1.   
    1.         sop("a==b:"+(a==b));//结果为true。因为a和b指向了同一个Integer对象 
    1.           //因为当数值在byte范围内容,对于新特性,如果该数值已经存在,则不会在开辟新的空间  
    1.     }  
    1.   
    1.     public static void method()  
    1.     {  
    1.         Integer x = new Integer("123");  
    1.   
    1.         Integer y = new Integer(123);  
    1.   
    1.         sop("x==y:"+(x==y));  
    1.         sop("x.equals(y):"+x.equals(y));  
    1.     }  

8:String类的更多相关文章

  1. 标准库String类

    下面的程序并没有把String类的所有成员方法实现,只参考教程写了大部分重要的成员函数. [cpp] view plain copy #include<iostream> #include ...

  2. 自己实现简单的string类

    1.前言 最近看了下<C++Primer>,觉得受益匪浅.不过纸上得来终觉浅,觉知此事须躬行.今天看了类类型,书中简单实现了String类,自己以前也学过C++,不过说来惭愧,以前都是用C ...

  3. C++ string类的实现

    c++中string类的实现 今天面试被考到了, 全给忘记了!!!   //string类的实现 #include <iostream> #include <string.h> ...

  4. String类的功能

    String类              标红的为较少出现的 1.判断功能 boolean equals(Object obj) :比较字符串内容是否相同,区分大小写 boolean equalsIg ...

  5. java基础复习:final,static,以及String类

    2.final 1)为啥String是final修饰的呢? 自己答: 答案: 主要是为了“效率” 和 “安全性” 的缘故.若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所 ...

  6. String类和StringBuffer类的区别

    首先,String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringB ...

  7. 05_整理String类的Length()、charAt()、 getChars()、replace()、 toUpperCase()、 toLowerCase()、trim()、toCharArray()使用说明

    Question: 整理String类的Length().charAt(). getChars().replace(). toUpperCase(). toLowerCase().trim().toC ...

  8. 标准C++中的string类的用法总结

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  9. String类常用方法

    1.String类的特点,字符串一旦被初始化就不会被改变. 2.String对象定义的两种方式 ①String s = "affdf";这种定义方式是在字符串常量池中创建一个Str ...

  10. 运用String类实现一个模拟用户登录程序

    package Test; import java.util.Scanner; // 模拟用户登录程序 // 思路: // 1.用两个String类分别接收用户名和密码 // 2.判断输入的用户名和密 ...

随机推荐

  1. ARC下野指针 EXC_BAD_ACCESS错误

    一般都是多线程造成的,某一个线程在操作一个对象时,另一个线程将此对象释放,此时就有可能造成野指针的问题.一种解决办法是如果都是UI操作则将这些操作都放在主线程去执行. 通常出现此问题的地方都在RAC, ...

  2. 基于PaddlePaddle的语义匹配模型DAM,让聊天机器人实现完美回复 |

    来源商业新知网,原标题:让聊天机器人完美回复 | 基于PaddlePaddle的语义匹配模型DAM 语义匹配 语义匹配是NLP的一项重要应用.无论是问答系统.对话系统还是智能客服,都可以认为是问题和回 ...

  3. java集合框架(1) hashMap 简单使用以及深度分析(转)

    java.util 类 HashMap<K,V>java.lang.Object  java.util.AbstractMap<K,V>      java.util.Hash ...

  4. 设计原则之依赖倒置js

    依赖倒置 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该依赖细节:细节应该依赖抽象.(百科全书) 这个定义什么意思,太专业 感觉不像人话.. 什么叫高层模块,什么叫底层模块,什么叫 ...

  5. etcd-v2第一集

    网站:https://github.com/coreos/etcd 一些观点:https://yq.aliyun.com/articles/11035 1.etcd是键值存储仓库,配置共享和服务发现2 ...

  6. pandas 导入导出

    pandas可以读取与存取的资料格式有很多种,像csv.excel.json.html与pickle等… 1.读取csv import pandas as pd #加载模块 #读取csv data = ...

  7. 原子性 CAS算法

    一. i++ 的原子性问题 1.问题的引入: i++ 的实际操作分为三个步骤:读--改--写 实现线程,代码如下: public class AtomicDemo implements Runnabl ...

  8. 查看class实际执行的类路径

    查看class真实归属的jar包位置getClass().getClassLoader().getResource(getClass().getName().replace('.', '/') + & ...

  9. 让.net core 支持静态文件

    想不到默认的.net core竟然不支持静态文件,还需要额外配置中间件来支持 1.Nuget安装  Microsoft.aspnetcore.staticfiles 2.在Startup.cs中使用服 ...

  10. linux python 安装到用户目录

    在公司服务器中,python可能存在多个版本,而且python中的包也有多个不同版本,由于不同猿的需求不同,经常会引起程序冲突,影响工作效率.因此,给大家分享一个在没有root权限时,将python安 ...