1.1 包装

把八大基本数据类型封装到一个类中,并提供属性和方法,更方便的操作基本数据类型。

包装类的出现并不是用于取代基本数据类型,也取代不了。

包装类位于java.lang包中

Number 类

Number数值类型是byte、double、float、int、long 和 short类的抽象父类,提供把包装类转化成基本数据类型的方法(xxxValue)。

1.2 Integer

Interger 是int基本数据类型的包装类,在Integer内部封装了一个final int value的属性。

1.2.1 常用方法

[1] 构造方法.创建出对应的 int 类型的值

 public static void main(String[] args) {
// 【1】Integer 属性
//System.out.println(Integer.MAX_VALUE);
//System.out.println(Integer.MIN_VALUE); // 【2】构造方法
int a = 10;
String bStr = "20";
Integer i1 = new Integer(a);
// 可能抛出NumberFormatException异常
Integer i2 = new Integer(bStr);
System.out.println(i1.toString());
System.out.println(i2.toString());
}

[2] int<->Integer<->string

 public static void main(String[] args) {

 // int->Integer

 Integer i1 = new Integer(10);

 Integer i2 = Integer.valueOf(20);

 // Integer->int

 int a = i1.intValue();

 // String->Integer

 Integer i3 = new Integer("30");

 Integer i4 = Integer.valueOf("40");

 //Integer->String

 System.out.println(i3.toString());

 // String->int

 int b = Integer.parseInt("50");

 // int->String

 String str = Integer.toString(10);

 //String str2 = Integer.toString(8, 2);

 //System.out.println(str2);

 }

[3] Comparable接口

Comparable 表示具有比较能力,对象可比较大小,此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序。

Comparable 定义了a.compareTo(b),返回值表示

a.compareTo(b)

返回值

排序

a < b

负整数

升序

a = b

0

相等

a > b

正整数

降序

 // 【2】Integer的比较

 Integer i2 = new Integer(20);

 Integer i3 = new Integer(10);

 System.out.println(i2.equals(i3));

 System.out.println(i2.compareTo(i3));

1.2.2 自动装箱和自动拆箱

自动装箱

把基本数据类型自动转化成对象的包装类的过程称为自动装箱(auto-boxing)

 Integer i = 10;

把包装类自动转化成对于的基本数据类型的过程称为自动拆箱(auto-unboxing)

int a = i;
 public static void main(String[] args) {

 // Integer i1 = new Integer(10);

 // 自动装箱

 Integer i2 = 20; // i2 = new Integer(20);

 System.out.println(i2.toString());

 // 自动拆箱

 Integer i3 = new Integer(30);

 int a = i3; // i3.intValue();

 }

注意:

[1]自动装箱和自动拆箱是jdk1.5开始的

[2]不要过于频繁的使用拆装箱操作

1.3 其他基本数据类型包装类

其他包装类学习方法和Integer完全一样。

1.4 String

1.4.1 字符串本质

String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的对象。

字符串本质上是一个字符数组,它们的值在创建之后不能更改,所以字符串是常量;

可以把字符串看出是字符数组的包装类,内部声明一个private final char value[];

因为 String 对象是不可变的,所以可以共享。

通过字面量创建的字符串分配在常量区。

1.4.2 字符串常用方法

[1]构造方法

 public static void main(String[] args) {

 // 在堆区初始化一个空字符串

 String str1 = new String();

 // 通过一个字节数组构建一个字符串

 byte[] bytes = {97,98,99};

 // 通过使用平台的默认字符集解码指定的 byte 数组

 // System.out.println(Charset.defaultCharset());

 String str2 = new String(bytes);

 System.out.println(str2);

 byte[] byte2 = {-42,-48};

 String str3 = null;

 try {

 // 使用指定的字符集对字节序列进行解码

 str3 = new String(byte2,"GBK");

 } catch (UnsupportedEncodingException e) {

 e.printStackTrace();

 }

 System.out.println(str3);

 // 需求:对一个utf-8的字节序列进行解码

 byte[] byte3 = {-28,-72,-83,-28,-72,-83};

 try {

 // sssString str4 = new String(byte3, "UTF-8");

 String str4 = new String(byte3,0,3, "UTF-8");

 System.out.println("str4:"+str4);

 } catch (UnsupportedEncodingException e) {

 e.printStackTrace();

 }

 // 通过字符数组构建字符串

 char[] c1 = {'a','b','c','中','国'};

 // String str5 = new String(c1);

 String str5 = new String(c1,0,3);

 System.out.println(str5);

 String str6 = new String("abc");

 String str7 = "abc";

 System.out.println(str6 == str7);

 }

常见计算机编码

GB2312/GBK/Unicode/UTF-8

[2] 字符串的比较

 public static void main(String[] args) {

 // 【3】字符串比较

 String str1 = "abc";

 String str2 = "Abc";

 System.out.println(str1.compareTo(str2));

 // 忽略大小写比较

 System.out.println(str1.compareToIgnoreCase(str2));

 // 需求:请输入验证码

 /*String validCode = "a4Df";

 System.out.println("请输入验证码:"+validCode);

 Scanner sc = new Scanner(System.in);

 String inputStr = sc.next();

 if(inputStr.compareToIgnoreCase(validCode) == 0) {

 System.out.println("验证码正确");

 }else {

 System.out.println("验证码错误");

 }*/

 System.out.println(str1.contentEquals(str2));

 System.out.println(str1.equals(str2));

 System.out.println(str1.equalsIgnoreCase(str2));

 }

CharSequence 接口把字符串看出一个可读序列,提供了charAt(index)获取指定索引处的字符;length() 字符数组或者字符串的长度。

[3]查找、搜索字符串

 public static void main(String[] args) {

 // 【3】查找、搜索字符串中是否包含其他子串

 String str1 = "hello world";

 // 是否包含子串

 System.out.println(str1.contains("world"));

 System.out.println(str1.startsWith("he"));

 System.out.println(str1.endsWith("world"));

 System.out.println(str1.startsWith("ll", 2));

 // 需求:判断一个文件是否是png图片

 String fileName = "logo.png";

 if(fileName.endsWith(".png")) {

 System.out.println(fileName+"是一张图片");

 }

 // 查找字符串

 String str2 = "hello world hello";

 // 从左向右查找字符'o'第一次出现的位置,找到返回索引,没找到返回-1

 System.out.println(str2.indexOf('t'));

 System.out.println(str2.indexOf('o',5));

 // 从左向右查找字符串“ll”第一次出现的位置,找到返回索引,没找到返回-1

 System.out.println(str2.indexOf("ll"));

 System.out.println(str2.indexOf("ll",5));

 // 从右向左查找字符'o'第一次出现的位置,找到返回索引,没找到返回-1

 System.out.println(str2.lastIndexOf('o'));

 // lastIndex(char,fromIndex)

 // lastIndex(string);

 // lastIndex(string,fromIndex);

 }

[4]格式化字符串

通过指定占位符(%开始)格式化字符串

%d

格式化整形

%f

格式化浮点型

%.nf

格式化浮点型四舍五入保留n为小数,

%c

格式化字符

%s

格式化字符串

 public static void main(String[] args) {

 // 【4】格式化字符串

 float price = 998.126f;

 int a  = 10;

 int b = 2;

 // 10 / 2 = 5

 String str1 = String.format("%d / %d = %d", a,b,(a/b));

 System.out.println(str1);

 // 四舍五入保留两位小数

 String str2  =String.format("$%.2f", price);

 System.out.println(str2);

 }

[5] 把字符串按指定编码集编码成对于的字节序列

 // String str3 = "abc";

 String str3 = "中国";

 // 使用默认的字符集(GBK)

 byte[] byte1 = str3.getBytes();

 System.out.println(Arrays.toString(byte1));

 //String str4 = "abc";

 String str4 = "中国";

 // 使用utf8编码

 byte[] bytes2 = str4.getBytes("UTF-8");

 System.out.println(Arrays.toString(bytes2));

[6]替换字符串

 public static void main(String[] args)  {

 String str1 = "hello,world";

 String newStr1 = str1.replace('o', '8');

 System.out.println(newStr1);

 String newStr2 = str1.replace("ll", "");

 System.out.println(newStr2);

 // 需求:186-1234-2234

 String str3 = "186-1234-2234";

 System.out.println(str3.replace("-", ""));

 // 正则表达式专门用于验证字符串是否符合特定的格式。

 String str4 = "6764";

 // 验证str4是否输入的是一串数字

 boolean r = str4.matches("\\d+");

 System.out.println(r);

 // 需求:abc123te23daf去掉数字

 String str5 = "abc123te23daf";

 // String newStr5 = str5.replaceAll("\\d+", "");

 String newStr5 = str5.replaceFirst("\\d+", "");

 System.out.println(newStr5);

 }

[7]拆分字符串

 public static void main(String[] args)  {

 //【7】 根据指定字符串拆分字符串

 String str1 = "abc-123";

 String[] arr = str1.split("-");

 System.out.println(Arrays.toString(arr));

 // 需求:请快速构建一个26个小写英文字母的数组

 String str2= "abcdefghijklmnopqrstuvwxyz";

 String[] arr2 = str2.split("");

 System.out.println(Arrays.toString(arr2));

 // 根据正则拆分字符串

 String str3 = "abc123ta12asd";

 String[] arr3 = str3.split("\\d+");

 System.out.println(Arrays.toString(arr3));

 // 需求:请获取一个文件的文件名

 String fileName = "logo.png";

 String[] arr4 = fileName.split("\\.");

 System.out.println(Arrays.toString(arr4));

 }

[8] 求子串、大小写转换

 public static void main(String[] args)  {

 //【8】 求子串

 String str1 = "abc123";

 // fromIndex:开始位置,endInde 结束的位置

 // 含头不含尾

 String sub1 = str1.substring(0, 3);

 System.out.println(sub1);

 String sub2 = str1.substring(3);

 System.out.println(sub2);

 // 【9】大小写转换

 String str3 = "Abc";

 System.out.println(str3.toUpperCase());

 System.out.println(str3.toLowerCase());

 }

[9]其他方法

 public static void main(String[] args)  {

 // 去掉前导空格和后导空格

 String str1 = "  abc   ";

 String newStr1 = str1.trim();

 System.out.println(str1.length());

 // 获取字符串的字符数组

 char[] arr = str1.toCharArray();

 System.out.println(Arrays.toString(arr));

 // 把其他数据类型转化为字符串

 String str2 = String.valueOf(10);

 System.out.println(str2);

 }

1.5 StringBuffer

StringBuffer是字符的可变容器。可以在程序运行过程中向容器中添加、删除、修改字符。

StringBuffer 本质上是一个字符数组的包装类,并提供了很多方法向这个字符数组中添加、删除、修改字符。

StringBuffer 是线程安全的

1.5.1 StringBuffer工作原理

StringBuffer 内部维护了一个字符数组,默认字符数组的长度是16.当开发者向这个字符数组中添加元素时,如果有额外空间,直接添加到数组中,如果没有额外空间,StringBuffer内部自动拓容,拓容规则:当前容量*2+2,根据拓容的新空间,复制当前的数组内容到新数组中。

 public static void main(String[] args) {

         StringBuffer sb = new StringBuffer();
sb.append("a");
sb.append("b");
System.out.println(sb.capacity()); sb.append("1234567890ABCD");
sb.append('x');
System.out.println(sb);
System.out.println(sb.capacity()); // 未来如果确定不再向sb中添加字符,
// 优化内部的数组到指定的长度
sb.trimToSize();
System.out.println(sb.capacity());
}

1.5.2 常用方法

 package cn.sxt03.string02;

 public class Test01 {

 public static void main(String[] args) {

 StringBuffer sb1 = new StringBuffer();

 // 【1】添加

 sb1.append("hello");

 sb1.append('d');

 // 返回字符串的长度

 System.out.println(sb1.length());

 // 返回容器的大小

 System.out.println(sb1.capacity());

 // 【2】删除

 //System.out.println(sb1);

 //sb1.delete(0, 5);

 //System.out.println(sb1);

 // 【3】insert(index,t) 在指定位置index添加t

 sb1.insert(0, "123");

 System.out.println(sb1);

 // 【4】修改

 sb1.setCharAt(0, 'A');

 System.out.println(sb1);

 // 【5】setLength

 sb1.setLength(0); // 清空容器内容

 sb1.append("中国");

 System.out.println(sb1);

 }

 }

1.6 StringBuilder

StringBuffer 是线程安全的,执行效率低,JDK1.0

StringBuiler 就是为了缓解执行效率低而产生的,但线程不安全。JDK 1.5

Java中几个常用类的更多相关文章

  1. Java中正则表达式及其常用类Math、Calendar、Date、BigDecimal、BigInterger、System、Rondom的使用

    1:正则表达式(理解) (1)就是符合一定规则的字符串 (2)常见规则 A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ( ...

  2. Java集合框架(常用类) JCF

    Java集合框架(常用类) JCF 为了实现某一目的或功能而预先设计好一系列封装好的具有继承关系或实现关系类的接口: 集合的由来: 特点:元素类型可以不同,集合长度可变,空间不固定: 管理集合类和接口 ...

  3. Java中Date和Calender类的使用方法

    查看文章     Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...

  4. Java中几种常用数据类型之间转换的方法

    Java中几种常用的数据类型之间转换方法: 1. short-->int 转换 exp: short shortvar=0; int intvar=0; shortvar= (short) in ...

  5. JAVA中封装JSONUtils工具类及使用

    在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作.但是我们更习惯将其进一步封装,达到更好的重用. ...

  6. Java中直接输出一个类的对象

    例如 package com.atguigu.java.fanshe; public class Person { String name; private int age; public Strin ...

  7. Java中的不可变类理解

    一.Java中的不可变类 不可变类(Immutable Objects):当类的实例一经创建,其内容便不可改变,即无法修改其成员变量. 可变类(Mutable Objects):类的实例创建后,可以修 ...

  8. Java 中的静态嵌套类和非静态嵌套类

    Java 中的静态嵌套类和非静态嵌套类 术语:嵌套类分为两类:静态嵌套类和非静态嵌套类.声明 static 的嵌套类称为静态嵌套类,非静态嵌套类也称为内部类. class OuterClass { p ...

  9. Java中如何查看一个类依赖的包

    Java中如何查看一个类依赖的包 如图, 我如何知道JSONArray是依赖的哪一个包呢,这里有两个json-lib包?   测试语句:   public static void main(Strin ...

随机推荐

  1. Java Spring Boot VS .NetCore (七) 配置文件

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  2. ASP.NET 多环境下配置文件web.config的灵活配置

    调试,发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等.如果常常有调试,发布的需求,就需要常常修改web.config文件,这往往 ...

  3. SQL反模式学习笔记12 存储图片或其他多媒体大文件

    目标:存储图片或其他多媒体大文件 反模式:图片存储在数据库外的文件系统中,数据库表中存储文件的对应的路径和名称. 缺点:     1.文件不支持Delete操作.使用SQL语句删除一条记录时,对应的文 ...

  4. Python学习(三十六)—— Cookie、Session和自定义分页

    一.Django中操作Cookie 获取Cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR ...

  5. 20172328 2018-2019《Java软件结构与数据结构》第三周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第三周学习总结 概述 Generalization 本周学习了第五章:队列.主要内容包含队列的处理过程.如何用对例如求解问 ...

  6. python爬虫遇到https站点InsecureRequestWarning警告解决方案

    python爬虫遇到https站点InsecureRequestWarning警告解决方案 加三行代码即可 from requests.packages.urllib3.exceptions impo ...

  7. Linux基础系统优化

    Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ifconfig 查询.设置网卡和ip等参数 ifup,ifdown    脚本命 ...

  8. 动态规划——Valid Permutations for DI Sequence

    We are given S, a length n string of characters from the set {'D', 'I'}. (These letters stand for &q ...

  9. python 3 实现文件下载的方法总结

    新学的python,兴奋不已,于是网上各种资源各种爬,发现对于同样文件下载,各个下载方法的速度是不一样的(目前就知道两种方法下载#尴尬) 下面分别看下吧: 下载同样的图片,方法二的速度是方法一的二倍 ...

  10. hadoop2-HBase的安装和测试

    在安装和测试HBase之前,我们有必要先了解一下HBase是什么 我们可以通过下面的资料对其有一定的了解: HBase 官方文档中文版 HBase 深入浅出 我想把我知道的分享给大家,方便大家交流. ...