字符串的使用

116 阅读6分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情 1.枚举(enum):枚举指由一组固定的常量组成的类型

做一些有限的选择,尽量是一组一组的相对的数据:如性别(男、女雌、雄或公、母)只列举一组

2.Java API(Java Application Programming Interface) 即Java应用程序编程接口

常用Java API

java.lang
Enum、包装类、MathStringStringBufferSystem… … 
java.util 
java.io 
java.sql … …

3.包装类把基本类型数据转换为对象

每个基本类型在java.lang包中都有一个相应的包装类
包装类有何作用 
提供了一系列方法 
集合不允许存放基本数据类型数据,存放数字时,要用包装类型

4.包装类的构造方法

所有包装类都可将与之对用的基本数据类型作为参数来构造他们的实例
public Type (type value) 
如: integer i = new inteter(1);
除Character类外,其他包装类可将一个字符串作为参数构造他们的实例
public Type (String value) 
如:integer i = new inerger ("123");
  1. Boolean类构造方法参数为String类型时,若该字符串内容为true(不考虑大小写),则该Boolean对象表示true,否则表示false
  2. 当包装类构造方法参数为String 类型时,字符串不能为null,且该字符串必须可解析为相应的基本数据类型的数据,否则编译通过,运行时NumberFormatException异常 5.包装类的常用方法
所有包装类都有如下方法
public static Type valueOf(type value) 
如: Integer intValue = Integer.valueOf(21); 
除Character类外,其他包装类都有如下方法 
public static Type valueOf(String s) 
如: Integer intValue = Integer.valueOf("21")

6.包装类转换成基本类型:XXXValue()

例如:

integer inregerId = new integer(25); int intId = integerId.intValue();

7.在Integer类装载入内存时,把[-128, 127]范围内的整型数据装包成Integer类,并将其对应的引用放入到cache数组中。 从上面的源码可以看出,valueOf()在返回之前,会进行判断,判断当前 i的值是否在 -128到127之间。

如果存在,则直接返回引用,不再重新开辟内存空间。

如果不存在,就创建一个新的对象。

利用缓存,这样做既能提高程序执行效率,还能节约内存。

Integer a1= 127; Integer a2 = 127; 因为 IntegerCache中已经存在此对象,直接返回引用,引用相等并且都指向缓存中的数据,所以这时候a1 == a2返回true。

Integer a1 = 128; Integer a2 = 128;因为a1,a2的值大于127,不在[-128, 127]范围内,所以虚拟机会在堆中重新new一个 Integer对象来存放128,创建两个对象就会产生两个这样的空间。两个空间的地址不同,返回到栈中的引用的值也就不同,所以这时候a1 == a2返回false。

例题:

* Integer 128
* @author y 
*/ 
public class TestInteger {
public static void main(String[] args) { 
// 1.127--127范围内正确 Integer one = 127;
Integer two = 127;
System.out.print(one == two);
// 2.128---128范围内 Integer three = 128;
Integer four = 128;
System.out.print(three == four);
// 拆箱xxx.intValue() System.out.print(three.intValue() == four.intValue()); }

8.toSdtring ():以字符串形式返回包装对象表示的基本类型数据

String sex=Character.toString('男');
String id=Integer.toString(25); 
String sex='男'+""; 
String id=25+"";

9.parseXXX():把字符串转换为相应的基本数据类型数据(Character除外)

int num=Integer.parseInt("36"); boolean bool=Boolean.parseBoolean("false");

10.基本类型和包装类的自动转换

int intValue = intObject.intValue();
Integer intObject = 5; 
装箱:基本类型转换为包装类的对象 
拆箱:包装类对象转换为基本类型的值

11.包装类的特点:

所有包装类都是final类型,不能创建它们的子类
JDK1.5后,允许基本数据类型和包装类型进行混合数学运算
包装类并不是用来取代基本数据类型的 
在基本数据类型需要用对象表示时使用

12.String类提供了length()方法,确定字符串的长度 返回字符串中的字符数

例题:

* 注册用户,密码长度不小于6 String.length() */
import java.util.Scanner; 
public class TestStr { 
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入用户名:"); 
String root = input.next();
System.out.print("请输入密码:");
String passward = input.next(); 
// 字符串长度方法 
if (passward.length() < 6) {
System.out.print("密码长度不能小于6位");
} else {
System.out.print("注册成功!");
    } 
  } 
}

13.登录时不考虑用户名的大小写问题,实现登录

使用equalsIgnoreCase()方法 //比较值时忽略英文大小写 
使用toLowerCase()方法 //转换为全小写英文字母 
使用toUpperCase()方法 //转换全大写英文字母

例题:

public static void main(String[] args) { 
String str = "Hello World"; 
//转换全大写英文字母 
System.out.println(str.toUpperCase());
//转换为全小写英文字母 
System.out.println(str.toLowerCase());
//比较值时忽略英文大小写 
System.out.println("hello worlD".equalsIgnoreCase(str)); }

14.打印输出“小鱼儿”

String word = "Hello, ";
//去掉字符串前后的空格
word = word.trim();
String s = word.concat("小鱼儿!"); 
int index1 = s.indexOf(','); 
int index2 = s.indexOf('!'); System.out.println(s.substring(index1+1,index2));

15.String类提供了split()方法,将一个字符串分割为子字符串,结果作为字符串数组返回

例题:

/** * 字符串分割 
* @author y */ 
public class TestSplit {
public static void main(String[] args) {
String song = "爱太深容易看见伤痕,\n" + "情太真所以难舍难分,\n"
+ "折一千对纸鹤,\n" + "结一千颗心情,\n" + "传说中心与心能相逢,\n" 
+ "夜难眠往事忽隐忽现,\n" + "心在痛对你越陷越深,\n" 
+ "折一千对纸鹤,\n" + "解一千个心愿,\n" + "梦醒后情缘不再飘零,\n"
+ "我的心不后悔,\n" + "折折叠叠都是为了你,\n" + "我的泪流不尽,\n"
+ "纠缠在梦里夜里的负累,\n" + "我的心不后悔,\n" 
+ "反反复复也是为了你,\n" + "邰正宵,\n" + "邰正宵,\n" 
+ "千纸鹤千颗心在风里飞,\n" + "夜难眠往事忽隐忽现,\n" 
+ "心在痛对你越陷越深,\n" + "折一千对纸鹤,\n" + "解一千个心愿,\n" 
+ "梦醒后情缘不再飘零,\n" + "我的心不后悔,\n" 
+ "折折叠叠都是为了你,\n" + "我的泪流不尽,\n" 
+ "纠缠在梦里夜里的负累,\n" + "我的心不后悔,\n" 
+ "反反复复也是为了你,\n" + "千纸鹤千颗心在风里飞,\n" 
+ "我的心不后悔,\n" + "折折叠叠都是为了你,\n" + "我的泪流不尽,\n"
+ "纠缠在梦里夜里的负累,\n" + "我的心不后悔,\n" 
+ "反反复复也是为了你,\n" + "千纸鹤千颗心在风里飞,\n" 
+ "千纸鹤千份情在风里飞"; 
String[] songs = song.split(",");
for (String s : songs) { 
System.out.println(s); 
} }

16.StringBuffer:

对字符串频繁修改(如字符串连接)时,使用StringBuffer类可以大大提高程序执行效

StringBuffer声明

StringBuffer strb = new StringBuffer(); StringBuffer strb = new StringBuffer("aaa")

StringBuffer的使用

sb.toString(); //转化为String类型

sb.append("**"); //追加字符串

sb.insert (1, "**"); //插入字符串

题目:将一个数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔

import java.util.Scanner; 
public class TestBuffer {
/** * 逢三位插入逗号 
* @param sb */ 
public void insertComma() {
Scanner input = new Scanner(System.in);
System.out.print("请输入一串数字:"); 
String num = input.next();
StringBuffer sb = new StringBuffer(num);
int index = num.length(); 
//将一个数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔开 for(;index>=0;index-=3) { 
//判断字符串长度不大于3,不插入逗号 if(index<=3) { System.out.print(sb.toString()); break; }
//字符串长度满足三位,加入逗号 if(sb.length() > 3) { sb.insert(index-3, ","); 
} } } 
public static void main(String[] args) {
//创建StringBuffer对象并调用
new TestBuffer().insertComma(); } }

17.String 与StringBuffer的区别

String是不可变对象
经常改变内容的字符串最好不要使用String 
StringBuffer是可变的字符串 
字符串经常改变的情况可使用StringBuffer,更高效 
JDK1.5后提供了StringBuilder,等价StringBuffer 
StringBuilder线程不安全,效率高于StringBuffer,StringBuilder线程安全,
效率低于StringBuilder

18.Math方法

java.lang.Math类提供了常用的数学运算方法和两个静态常量E(自然对数的底数) 和PI(圆周率 
Math.abs(-3.5); 
//返回
3.5 Math.max(2.5, 90.5);
//返回
90.5 int random = (int) (Math.random() * 10);
//生成一个0-9之间的随机数 
Math.round()
/** * Math.round()四舍五入 
* @author y */ 
public class TestRound {
public static void main() { double one = 3.4; double two = 3.5;
// Math.round()四舍五入 
System.out.println(Math.round(one)); System.out.println(Math.round(two)); } }

19.生成随机数的其他方式?

Random rand=new Random(); 
//创建一个Random对象 
for(int i=0;i<20;i++){
//随机生成20个随机整数,并显示
int num=rand.nextInt(10);
//返回下一个伪随机数,整型的 
System.out.println("第"+(i+1)+"个随机数是:"+num); }

20.如何获取当前日期?

java.util.Date类:表示日期和时间
提供操作日期和时间各组成部分的方法 
Java.util.Date 
java.text.SimpleDateFormat类
用于定制日期时间的格式
例题:

import java.text.SimpleDateFormat;

import java.util.Date;

public class TestDateTime {

public static void main(String[] args) {

// 创建当前日期对象

Date dt = new Date();

try {

// 日期对象转字符串

// yyyy 年份(year) MM月份(day) dd日(day) hh小时(hour) mm分钟(minutes) ss秒(seconds)

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

String str = sdf.format(dt);

System.out.print("当前系统日期时间是:" + str);

// 字符串对象转日期对象

dt = sdf.parse(str);

System.out.print(dt);

} catch (Exception e) {

e.printStackTrace();

}

}

}

21.Calendar类(日历类)

抽象类,java.util.Calendar 
用于设置和获取日期/时间数据的特定部分
Calendar类提供一些方法和静态字段来操作日历

22.获取当前时间,使用SimpleDateFormat以“年-月-日”方式显示 计算,2015年4月6日是一年中的第几星期

import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 
public class TestSetDateTime { 
//方法一 
// public static void main(String[] args) { 
// Date date = new Date(); 
// try { 
// SimpleDateFormat ymd = new SimpleDateFormat("yyyy年MM月dd日"); // String now = ymd.format(date);
// System.out.println("当前系统时间为:" + now); 
// // 创建一个实例对象通过静态方法getInstance获取Calendar对象 
// Calendar dt = Calendar.getInstance();
// // 将周一(FirstDay)设为每周的第一天(monday)
// dt.setFirstDayOfWeek(Calendar.MONDAY); 
// // 将年份设为2015年
// dt.set(Calendar.YEAR, 2015);
// // 将月份设为4月(java中0-11代表12个月) 
// dt.set(Calendar.MONTH, 3); 
// // 将日数设为第6日
// dt.set(Calendar.DATE, 6); 
// // 使用Calendar.WEEK_OF_YEAR来求出属于某年的第几周 // System.out.println("2015年4月6日是第" + dt.get(Calendar.WEEK_OF_YEAR) + "周");
// } catch (Exception e) { 
// e.printStackTrace(); 
// } // }
//方法二 
public static void main(String[] args) 
throws Exception {
//创建一个日期对象 Date nowDay = new Date();
//SimpleDateFormat构造方法 .parse()方法将字符串格式转为日期格式 Date historyDay= new SimpleDateFormat("yyyyMMdd").parse("20150406"); SimpleDateFormat day = new SimpleDateFormat("yyyy年MM月dd日是y年的第w周");
String now = day.format(nowDay); 
String history = day.format(historyDay);
System.out.println("当前系统时间为:" + now + "\n" + history); } }

23.从键盘中任意输入一个字符,判断该字符的类别,并控制台打印输出(这是一个XXX----->数字、其它字符、大写字母、小写字母等)

package test_6_21;
import java.util.Scanner; 
/** * 从键盘中任意输入一个字符,判断该字符的类别,并控制台打印输出(这是一个XXX----->数字、其它字符、大写字母、小写字母等) * 
* @author y * */
public class JudgeInputType {
public static void main(String[] args) { 
Scanner input = new Scanner(System.in);
System.out.print("请输入一个任意字符:"); 
String chars = input.next();
char c = chars.charAt(0); 
//判断字符c是否是数字字符 if (Character.isDigit(c)) { System.out.println("这是一个数字!"); 
//判断c是否是大写字母字符 } else if (Character.isUpperCase(c)) { System.out.println("这是一个大写字母!"); 
//判断c是否是大写字母字符 } else if (Character.isLowerCase(c)) { System.out.println("这是一个小写字母!");
} else { System.out.println("这是一个一个其他字符!");
} } }

25.字符串的拼接,提取,大小写的转换

例题:

package test_6_21; 
import java.util.Scanner; 
/** * 4.用户输入一个属性的名称,如输入age,返回getAge * 
* @author y * */
public class GetAge { 
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个属性名称:"); 
String attribute = input.next();
String attribute1 = attribute.substring(0,1).toUpperCase(); 
String attribute2 = attribute.substring(1).toLowerCase(); System.out.println("转换后的字符串为:" + "get" + attribute1 + attribute2); } }

26.java 字符串截取替换_JAVA学习笔记之字符串各种操作(截取、替换、分割、大小写转换、相等)

public class Mm {
public static void main(String[] args) { 
//字符串操作 
//1、获取字符串一部分 String str="别人笑我太疯癫,我笑他人看不穿"; String substr1=str.substring(8);
//从下标为8开始,直到末尾 String substr2=str.substring(0, 7);
//从下标为0到下标为6 
System.out.println(substr2);
System.out.println(substr1);
System.out.println(); 
//2、字符串替换 
String str1="I love you";
String repstr1=str1.replace("you", "her");
//将you替换成her String repstr2=str1.replaceFirst("o", "O");
//将第一次出现的o替换成O System.out.println(repstr1); System.out.println(repstr2);
System.out.println(); 
//3、字符串分割,可用|作为多个分隔符的连接符,\\|,\\.,作为\,.转义字符使用 String str2="But you love him";
String spstr1[]=str2.split(" ");
//将空格作为分隔符,得到字符串数组 for(String s : spstr1){ System.out.println(s); } 
String spstr2[]=str2.split(" ", 2);
//将空格作为分隔符,分割为两段,得到字符串数组 for(String s : spstr2){ System.out.println(s); } System.out.println(); 
//4、大小写转化 String str3="fack you"; String upstr=str3.toUpperCase();
System.out.println(upstr); 
String str4="I AM SO SORRY";
String lostr=str4.toLowerCase();
System.out.println(lostr);
System.out.println(); 
//5、除去首尾空白内容 
String str5=" s o r r y "; 
String shortstr=str5.trim(); 
System.out.println(shortstr);
//6、判断字符串是否相等 String str6="sorry";
String str7="SORRY"; 
boolean bool1=str6.equals(str7);
boolean bool2=str6.equalsIgnoreCase(str7);
//忽略大小写 System.out.println(bool1+" "+bool2); System.out.println(); } }