Java基础笔记总结(7)-常见类(1)Scanner,String、StringBuffer、StringBulider、Arrays、基本数据类型包装类(装箱还拆箱)

java lang包不需要导包

1、字符串字面值可以被看成字符串对象

2、字符串是常量,一旦被赋值,就不能改变

toString()方法返回对象本身,当改变值是实际是改变了地址值

String类的构造方法

public String()默认空行构造方法

public String(byte[] bytes) 对byte数组进行解码操作

public String(byte[] bytes,int index ,int length)把字节数组一部分转换成字符串

public String(char[] value)把字符数组转换成字符串

public String(char[] value,int index ,int length)把字符数组的一部分转换成字符串

public String (String original) 把字符串常量值转成字符串

String类的判断功能

s1.equals(s2)  字符串等价,不忽略大小写

s1.equalsIgnoreCase(String str)比较字符串的内容想否相同 ,忽略大小写

s1.contains(str) 判断大字符串是都包含子字符串

s1.startsWith(String str) 判断字符串是否以指定字符串开头

s1.endsWith(String str) 判断字符串是否以指定字符串结尾

s1.isEmpty()判断字符串是否为空

“”和null的区别

“”是字符串常量,同时也是一个String类对象,是对象就可以调用其方法

null 是空常量,不能调用任何方法,否则会出现空指针异常,null常量可以给任意的引用数据类型赋值

String类的获取动能

str.length 返回长度

string charAt(int index) 获取指定索引位置的字符,超出位置 StringIndexOutOfBoundsException

indexOf(int ch)获取指定字符在此字符中出现的第一处索引位置

indexOf(String str)获取指定字符串在此字符中出现的第一处索引位置

indexOf(int ch,int index)从指定位置开始,获取指定字符在此字符中出现的第一处索引位置

indexOf(String str,int index)从指定位置开始,获取指定字符在此字符中出现的第一处索引位置

lastIndexOf

subString(int start) 从指定位置开始截取字符串,默认到末尾

subString(int start,int end) 从指定位置开始截取字符串,并到指定位置结束

字符串的遍历:

for(int i = 0 ; i<str.length(); i++){

char c = str.charAt(i);

}

String类的转换功能

byte[] getBytes() 把字符串转换为字节数组 GBk码 一个中文代表两个字节,GBk码表,中文的第一个字节肯定是负数

char[] toCharArray()把字符串转换为字节数组

static String valueOf(char[] chs) 把字符转换成字符串

static String valueOf(int i) 把字符转换成字符串,把int类型的数据转换为字符串,可以把任意类型的数据转换为字符串

抽取方法快捷键 alt+shift+M

str.toLowerCase() 是对原来的字符串进行改造并赋值给新的字符串,注意一定是返回值才是修改后的

str.toUpperCase()

str.concat(str2) 拼接字符串

String类的其他功能

字符串代替

str.replace(char old ,char new )

str.replace(string old,string new)

CharSequence 字符串的父类

字符串去除空格的方法//去除的时开头和末尾的演示

str.trim();

字符串按照字典顺序比较两个字符串:

int i = str.compareTo(String str)  正数(前比后大)、负数和零,从第一个字母开始比较,相同继续,不同则返回,完全一样的按照长度比较

int i = str.compareToIgnoreCase(String str)

注意char的转换都是Unicode值(AscII隶属于Unicode表)

字符串的翻转

1、将字符串转换成字符数组

2、将遍历字符数组,并在此拼接成字符串

案例 统计大串中小串出现的次数

1、定义计数器,变量为0

2、利用IndexOf()方法来判断大串中的小串,如果没有返回-1;如果有返回索引值

3、根据获取索引值,截取字符串


StringBuffer类

1、属于Java.lang

2、线程安全的可变字符串序列(线程安全效率低,线程不安全效率较高)

StringBuffer和String的区别

String是一个不可变的字符序列,而StringBuffer是一个可变的字符序列,执行同步

StringBuilder是不同步的,线程不安全,但是速度快

StringBuffer的构造方法

public StringBuffer();初始容量为16 若没超出,不会分出新的缓冲区数组

public StringBuffer(CharSequence seq);父类引用放子类对象

public StringBuffer(int capacity);

public StringBuffer(String str);

初始容量

stringBuffer.capacity(),理论值

长度length()不是初始容量方法,实际值

如果构造方法放入字符串,StringBuffer的容量是capacity+length

------------------------------------------------------------------

StringBuffer的添加功能

StringBuffer sb = new StringBuffer();

sb= sb.append(String str...)

注意引用指向了同一个对象,所以每一个引用的值都是相同的,不断在向字符缓冲区增加内容

指定位置添加sb.insert(int index(具体位置),"heima");但是要注意索引越界异常的问题,三索引指代是数组内的第四个位置

StringBuffer的删除功能

StringBuffer sb = new StringBuffer();

sb.delete(int index(具体的位置)); 注意索引越界异常

sb.delete(int start,int end);删除结果包含头但不包含尾

清空缓冲区sb.delete(0,sb.length());

StringBuffer的替换和反转功能

StringBuffer sb = new StringBuffer("xxxxxxxxxx");]

sb.replace(int start,int end,str);包头不包尾

sb.reverse()字符串反转

-----------------------------------------------------------------------

StringBuffer的注意事项

String str = sb.subString(int start) 指定位置到末尾,注意是String接收

subString(int start,int end)包头不包尾,只改变字符串,StringBuffer不改变

StringBuffer和String互相转换

String--->StringBuffer

Stringbuffer sb = newStringBuffer(String str);

通过构造方法将字符串转换为StringBuffer

或者使用append方法将字符串转换为StringBuffer

StringBuffer--->String

String s1 = new String(StringBuffer);

s1 =sb.toString();

s1 = sb.subString(0,sb.length());

-----------------------------------------------------------------------------

StringBuffer和StringBudder的区别:方法是一模一样的

StringBuffer 是JDk1.0 线程安全效率低

StringBulider 是JDK1.5 线程不安全效率高

两者作为参数传递时,

基本数据类型的值传递,不改变值

引用数据类型的值传递,改变其值

-----------------------------------------------------------------------------

冒泡法:(一定是向后排序)

如果前面元素比后面大,交换位置

for(int i = 0;i < arr.length;i++)

  for(int j = 0; j< arr.length-i-1;j++)

if(arr[j]>a[j+1]){

int temp = arr[j];

arr[j]=arr[j+1];

arr[j+1] = temp

}

-----------------------------------------------------------------------------选择排序(第一个位置依次与其他位置比较)

for(int i =0;i<arr.length;i++){

  for(int j=i+1;j<arr.length;j++){

if(arr[i]<a[j]){

int temp = arr[j];

arr[j]=arr[i];

arr[i] = temp

}

}

-----------------------------------------------------------------------------二分查找(前提是数组排列有序) 不应该有重复元素,否则是找不到的

int min = 0;

int max = arr.length-1;

int mid = (min+max)/2

while(arr[mid] != num){

  if(arr[mid]>num){

    max = mid -1;

  }else {

    min = mid +1;

  }

    mid = (min+max)/2;

  if(min>max){

    break;

  }

}

-----------------------------------------------------------------------------Array类

Arrays.toString(int[] a)

Arrays.sort(int[] a);

Attray.binarySearch(int[] a ,int key);如果没有找到 则放在负的插入点-1

-----------------------------------------------------------------------------

基本数据类型包装类 在对象中定义更多的方法操作该数据

byte Byte

short Short

int Integer

long Long

float Float

double Double

char Character

bool Boolean

构造方法 public Integer(int value)

public Integer(String s(必须是整形数字字符串 不然会报错) )

可以将整数转换成对应进制的数字Binary Hex Octal

静态常量最大值max_value 2^31-1和最小值min_value -2^31

int 和String的转换

int - String

1、利用""拼接

2、public staic String valueOf(int i);

3、int - Integer - String

  Interger类的toString()方法

4、public static String toString(int i);

String ---int

    int i = new Integer(String str).intValue();

    public static int parseInt(String s);

注意 只有Char类型没有parseInt()的方法,也就是Character中并没有该种方法

    字符串到字符转换用toCharArray()就可以

JDK5的拆箱、装箱操作

自动拆箱 把包装数据类型转换成基本数据类型

      //  int i = new Integer().intValue(i1);

int i = Integer i1;

自动装箱 把基本数据类型转换成包装数据类型

      //  Interger i = 100;

  Integer i = new Integer(100);

注意在装箱过程中,如果数字在-128-127 代表byte取值范围,在其中的不会出现问题,只会去常量数组中获取值,而非创建对象地址,该常量数组中共存有255个值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容