------- android培训java培训、期待与您交流! ----------

    java中一些基础类比如String、StringBuffer和基本数据类型包装类都是非常常见且使用非常频繁的类。这些类虽然简单,但是想要熟练使用也必须要学习,虽然API文档对这些类的用法都讲的比较详细,但是我觉得还是有必要再整理一下。

一、String类

1、概述

  String就是字符串的意思,首先要明确一点的是String并不属于基本数据类型。

  因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。

  注意new String() 和 newString("")都是声明一个空的字符串而不是null。

  字符串一旦被初始化就不可以被改变。

2、初始化

  对象初始化格式String s = new String("abc"); 

   ----可以简写为String  s = "abc";

3、字符串常量池

讲之前首先我们先来看一个例子

//例1
String s1 = “abc";
String s2 = "abc";
String s3 = "a" + "bc";
System.out.println(s1 == s2); // true
System.out.println(s1 == s3);// true //例2
   String s1 = new String("abc");
   String s2 = new String("abc");
  String s3 = "a" + new String("bc");
  System.out.println(s1==s2); //false
  System.out.println(s2==s3); //false

  运行这个2个例子的结果,我们会惊奇的发现例1和例2运行的结果竟然不同。上面不是说用new和不用new是一样的吗?

这里我们就要引入常量池的概念:常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。

  Java会确保一个字符串常量只有一个拷贝。

  因为例子中的s1和s2中的”abc”都是字符串常量,它们在编译期就被确定了,所以s1==s2为true;

  用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。

4、常用方法

4.1、获取:

  4.1.1 获取字符串中字符的个数(长度).

  int length();

4.1.2 根据位置获取字符。

   char charAt(int index);

4.1.3 根据字符获取在字符串中的第一次出现的位置.

  int indexOf(int ch) ch为字符的Unicode编码

   int indexOf(int ch,int fromIndex) 从指定位置进行ch的查找第一次出现位置

   int indexOf(String str)根据字符串获取在字符串中的第一次出现的位置.

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

4.1.31反向索引,从后向前查找

  int lastIndexOf(int ch)

  int lastIndexOf(int ch,int fromIndex):从指定位置进行ch的查找第一次出现位置

   int lastIndexOf(String str);

  int lastIndexOf(String str,int fromIndex);

4.1.4 获取字符串子串。

  String substring(int beginIndex, int endIndex)//包含begin 不包含end 。

   String substring(int beginIndex);//从beiginIndex索引开始截取字符串。

4.2、转换

  4.2.1 将字符串变成字符串数组

   String[]  split(String regex):涉及到正则表达式.

4.2.2 将字符串变成字符数组。

  char[] toCharArray();

4.2.3 将字符串变成字节数组。

   byte[] getBytes();

4.2.4 将字符串中的字母转成大小写。

  String toUpperCase():大写

  String toLowerCase():小写

 4.2.5将字符串中的内容进行替换

   String replace(char oldch,char newch);

  String replace(String s1,String s2);

2.6 将字符串两端的空格去除。

  String trim();

2.7 将字符串进行连接 。

  String concat(string);

4.3、判断比较

4.3.1 两个字符串内容是否相同啊?

  boolean equals(Object obj);

  boolean equalsIgnoreCase(string str);忽略大写比较字符串内容。

4.3.2 字符串中是否包含指定字符串?

  boolean contains(string str);

4.3.3 字符串是否以指定字符串开头。是否以指定字符串结尾。

  boolean startsWith(string);

  boolean endsWith(string);

二、StringBuffer类

1、概述

  StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。

所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。

在StringBuffer类中存在很多和String类一样的方法,这些方法在功能上和String类中的功能是完全一样的。

但是有一个最显著的区别在于,对于StringBuffer对象的每次修改都会改变对象自身,这点是和String类最大的区别。

2、StirngBuffer初始化

  StringBuffer对象的初始化不像String类的初始化一样,Java提供的有特殊的语法,而通常情况下一般使用构造方法进行初始化。

3、特点  

  a、长度的可变的。    

   b、可以存储不同类型数据。    

   c、最终要转成字符串进行使用。   

  d、可以对字符串进行修改。

4、常用方法

4.1添加:

StringBuffer append(data);//能够添加各种数据类型

StringBuffer insert(index,data); //在索引出插入各种类型

4.2删除:

StringBuffer delete(start,end):包含头,不包含尾。

StringBuffer deleteCharAt(int index):删除指定位置的元素

4.3查找:

char charAt(index); //在该索引出的char值

  int codePointAt //索引处的字符

int indexOf(string); //

int lastIndexOf(string);

 int capacity() //返回当前Buffer的容量(初始16)

 int length()  //长度

4.4修改:

StringBuffer replace(start,end,string);

   void setCharAt(index,char);

  StringBuffer reverse() 将此字符序列用其反转形式取代(String类中没有反转)

  void trimToSize()  尝试减少用于字符序列的存储空间。

 

5、StringBuilder

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

这里就不详细介绍了。注意一下它们的不同点就好了。

不同的是:

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

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

三、基本数据类型包装类

 1、概述

Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类。

 2、对应关系

byte ——Byte

short ——Short

int ——Integer

long-----Long

float-----Float

double----Double

char----Character

boolean---Boolean

3、Integer类内部的常用方法

事实上这几种数据类型包装内是比较相似,我只以Integer为例简单介绍一下。

  a、parseInt方法

//将数字字符串转换为int数值。         String s = “123”;         int n = Integer.parseInt(s);

//将字符串”120”按照十进制转换为int,则结果为120          int n = Integer.parseInt(“120”,10);

//将字符串”12”按照十六进制转换为int,则结果为18          int n = Integer.parseInt(“12”,16);

//将字符串”ff”按照十六进制转换为int,则结果为255          int n = Integer.parseInt(“ff”,16);

   b、int转字符串

  可以直接用+号连接,也可以用toString函数。

//将int类型转换为对应的String类型。     int m = 1000;     String s = Integer.toString(m);

 c、十进制转成其他进制。

toBinaryString();

toHexString();

toOctalString();

四、最后

即使是简单的东西,我们也要把它重视起来,坚持每天进步一点点,最后我们就是成功的。

黑马程序员----java基础:String与StringBuffer及基本数据类型包装类的更多相关文章

  1. 黑马程序猿——15,String,StringBuffer,基本数据类型包装对象

    ------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...

  2. 黑马程序员——JAVA基础之String和StringBuffer

    ------- android培训.java培训.期待与您交流! ---------- String类: 字符串是一个特殊的对象. 字符串一旦初始化就不可以被改变. String str = &quo ...

  3. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  4. 黑马程序员Java基础班+就业班课程笔记全发布(持续更新)

    正在黑马学习,整理了一些课程知识点和比较重要的内容分享给大家,也是给自己拓宽一些视野,仅供大家交流学习,大家有什么更好的内容可以发给我 ,现有黑马教程2000G  QQ 1481135711 这是我总 ...

  5. 黑马程序员----java基础笔记上(毕向东)

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...

  6. 黑马程序员——JAVA基础之反射

      ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! -------     Java 反射是Java语言的一个很重要的特征,它使得Java具体了"动态 ...

  7. 黑马程序员——JAVA基础之泛型和通配符

    ------- android培训.java培训.期待与您交流! ---------- 泛型:            JDK1.5版本以后出现新特性.用于解决安全问题,是一个类型安全机制. 泛型好处: ...

  8. 黑马程序员——JAVA基础之简述面向对象,类,变量,匿名对象

    ------- android培训.java培训.期待与您交流! ---------- 面向对象: 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将 ...

  9. 黑马程序员——JAVA基础之语法、命名规则

    ------- android培训.java培训.期待与您交流! ---------- 1.java语言组成:关键字,标识符,注释,常量和变量,运算符,语句,函数,数组. 2.java关键字:被Jav ...

随机推荐

  1. 我要开启vue2新征程。

    最近我们Team接到一个新项目,给财务部开发一个内部用的结算系统. 我想了想,心里这个兴奋啊(内部系统诶,可以大胆一点的用vue2了...) 又多了一个能练手的项目,之前的卡爷就是太坑爹了...明明v ...

  2. C项目实践--图书管理系统(1)

    1.功能需求分析 图书管理系统主要用于对大量的图书信息,包括书名.作者.出版社.出版日期.ISBN(书号)等进行增.删.改.查以及保存等操作.同时也包括对用户的管理,用户包括管理员和普通用户两种权限, ...

  3. Supporting IPv6-only Networks

    Supporting IPv6-only Networks - Support - Apple Developer https://developer.apple.com/support/ipv6/ ...

  4. win10 tortoiseSVN文件夹及文件图标不显示解决方法

    对于SVN来说,因为每个图标都代表着不同的含义,预示着不同的状态,是指示灯的作用,如果没有正确的图标很可能造成数据的丢失等. 输入:win+R,输入regedit,调出注册表信息,按下Ctrl+F,在 ...

  5. vim插件:显示树形目录插件NERDTree安装 和 使用【转】

    本文转载自:https://my.oschina.net/VASKS/blog/388907 下载和配置 NERDTree插件的官方地址如下,可以从这里获取最新的版本 https://github.c ...

  6. UVA10462Is There A Second Way Left? —— 次小生成树 kruskal算法

    题目链接:https://vjudge.net/problem/UVA-10462 Nasa, being the most talented programmer of his time, can’ ...

  7. Get started with Sourcetree

    Understand the interface Bookmarks window From that window, select the Local or Remote buttons to vi ...

  8. YTU 1001: A+B Problem

    1001: A+B Problem 时间限制: 1 Sec  内存限制: 10 MB 提交: 4864  解决: 3132 [提交][状态][讨论版] 题目描述 Calculate a+b 输入 Tw ...

  9. python dig trace 功能实现——通过Querying name server IP来判定是否为dns tunnel

    dns tunnel确认方法,查询子域名最终的解析地址: 使用方法:python dig_trace.py  "<7cf1e56b 67fc90f8 caaae86e 0787e907 ...

  10. 小程序-demo:快速开始

    ylbtech-小程序-demo:快速开始 1.返回顶部 1.app.js //app.js App({ onLaunch: function () { // 展示本地存储能力 var logs = ...