String 类【最终类】
[if !supportLists]1. [endif]打印字符串中,某个元素出现的位置。
packagecn.tedu.string;
importjava.util.Scanner;
publicclass StringExer6
{
@SuppressWarnings("resource")
publicstaticvoid main(String[] args) {
// 获取到了2个字符串
Scanners = newScanner(System.in);
Stringstr = s.next();
Stringsub = s.next();
// 记录位置
intindex= 0;
// 找子串出现的位置,从第0开始向后依次找
// 找到之后打印这个位置然后从当前位置的下一位继续寻找
//abcda a
while(index
// 从指定的位置开始找元素
//index(字符,从第几位开始寻找)【找到为整数,找不到为-1】
index = str.indexOf(sub,index);
if(index != -1){
System.out.println(index);
index++;
}else
break;
}
}
}
[if !supportLists]2、[endif]输入一个字符串,输入一个数,按照“gbk”编码将字符串转化为这个数的长度。
packagecn.tedu.string;
importjava.util.Scanner;
publicclass StringExer5
{
@SuppressWarnings("resource")
publicstaticvoid main(String[] args) throws Exception {
// 获取到一个字符串和一个数字
Scanners = newScanner(System.in);
Stringstr = s.next();
intn = s.nextInt();
// 将字符串转化为一个字节数组,拆分成存储单元然后进行判断最后一位
byte[] bs = str.getBytes("gbk");
// 根据指定的字节个数截取这个字符串
Stringsub = new String(bs, 0, n, "gbk");
// 确定子串的最后一位是否转化出来
if (sub.charAt(sub.length() - 1) != str.charAt(sub.length() -
1))
sub = new String(bs, 0, n - 1, "gbk");
System.out.println(sub);
}
}
[if !supportLists]3、[endif]获取一个字符串判断每个字符出现的次数
packagecn.tedu.string;
importjava.util.Scanner;
/**
*输入一个字符串,统计其中每一个字符出现的次数
*/
publicclass StringExer4
{
@SuppressWarnings("resource")
publicstaticvoid main(String[] args) {
// 获取字符串
Scanners = newScanner(System.in);
Stringstr = s.next();
// 标记思想
// 给字符串的每一位字符进行标记
// 规定如果为false表示这一位没有统计过
// 如果为true说明这一位已经被统计过不需要被再次统计
boolean[] bs = newboolean[str.length()];
// 遍历字符串,依次获取每一位字符
// 从头到尾的获取过程中有的位置已经统计过
for (inti = 0; i
// 判断这一位是否已经被统计过
if (bs[i])
continue;
// 获取这一位字符
charc = str.charAt(i);
// 记录这个字符出现的次数
intcount = 0;
// 从当前位置开始继续向后寻找相同的字符
for (intj = i; j
{
count++;
bs[j] = true;
}
}
System.out.println(c + ":" + count);
}
}
}
[if !supportLists]4. [endif]输入一个字符串,将其中的数字提取出来并进行升序排序
package cn.tedu.string;
import java.util.Arrays;
import java.util.Scanner;
public class StringExer3 {
@SuppressWarnings("resource")
publicstatic void main(String[] args) {
//获取字符串
Scanners = new Scanner(System.in);
Stringstr = s.next();
//存储提取后的结果
char[]ns = new char[str.length()];
//记录提取的数字的个数
intcount = 0;
//遍历字符串,判断其中的字符是否是数字
for(int i = 0; i < str.length(); i++) {
charc = str.charAt(i);
if(c >= '0' && c <= '9')
ns[count++]= c;
}
//数组可能没有被填满,去除没有用到的位置
ns= Arrays.copyOf(ns, count);
//排序
Arrays.sort(ns);
System.out.println(newString(ns));
}
}
[if !supportLists]5. [endif]输入一个字符串,将其中的数字提取出来并求和
package cn.tedu.string;
import java.util.Scanner;
/**
*输入一个字符串,将其中的数字提取出来并求和
*/
public class StringExer2 {
@SuppressWarnings("resource")
publicstatic void main(String[] args) {
//获取到字符串
Scanners = new Scanner(System.in);
Stringstr = s.next();
//记录和
intsum = 0;
//将字符串转化为字符数组
char[]cs = str.toCharArray();
//遍历字符数组,提取其中的数字,增强for循环for(数组类型-变量名: 数组名)
for(char c : cs) {
if(c>= '0' && c <= '9')
sum+= (c - '0');
}
System.out.println(sum);
}
}
[if !supportLists]6. [endif]输入一个字符串,统计字符串中字母、数字和其他符号的个数
package cn.tedu.string;
import java.util.Scanner;
/**
*输入一个字符串,统计字符串中字母、数字和其他符号的个数
*/
public class StringExer1 {
@SuppressWarnings("resource")
publicstatic void main(String[] args) {
//输入字符串
Scanners = new Scanner(System.in);
//next在获取数据的时候是以空白字符(空格、制表符、回车)作为结束
//String str = s.next();
//nextLine在获取数据的时候是以回车作为结束
Stringstr = s.nextLine();
//记录字母、数字以及其他符号的个数
intletter = 0;
intnumber = 0;
intsymbol = 0;
//遍历字符串,然后依次判断每一个字符的类型
for(int i = 0; i < str.length(); i++) {
charc = str.charAt(i);
if(c >= 65 && c <= 90 || c >= 97 && c <= 122)
letter++;
elseif (c >= 48 && c <= 57)
number++;
else
symbol++;
}
System.out.println("字母:" + letter);
System.out.println("数字:" + number);
System.out.println("符号:" + symbol);
}
}
7.判断字符串:
//由3个字母组成
//第一个字母是a/b/c
//第二个字母是d/e/f/g
//第三个字母是x/y/z
public class PatternDemo2 {
publicstatic void main(String[] args) {
Stringstr = "a";
//判断字符串:
//由3个字母组成
//第一个字母是a/b/c
//第二个字母是d/e/f/g
//第三个字母是x/y/z
//System.out.println(str.matches("[abc][defg][xyz]"));
//匹配由一个字母组成的字符串
//System.out.println(str.matches("[a-zA-Z]"));
//匹配由一个数字组成的字符串
//System.out.println(str.matches("[0-9]"));
//System.out.println(str.matches("\\d"));
//匹配由一个字符组成的字符串,但不是a/b/c
//[^...]表示除了这些字符
System.out.println(str.matches("[^abc]"));
}
}
7 密码必须有小写字母,大写字母、数字其中的两个组成(正则表达式)
package cn.tedu.regex;
public class PatternExer2 {
publicstatic void main(String[] args) {
Stringpwd = "";
System.out.println(check(pwd));
}
privatestatic boolean check(String pwd) {
if(!pwd.matches("[a-zA-z0-9]{8,20}"))
returnfalse;
//记录出现的字符的种类
intcount = 0;
//判断是否含有小写字母
if(pwd.matches(".*[a-z].*"))
count++;
//判断是否含有大写字母
if(pwd.matches(".*[A-Z].*"))
count++;
//判断是否含有数字
if(pwd.matches(".*\\d.*"))
count++;
returncount >= 2;
}
}
8、package cn.tedu.baozhuang;
public class IntegerDemo1 {
@SuppressWarnings("unused")
publicstatic void main(String[] args) {
//int i = 7;
//利用基本类型的数据构建了对应的引用类型的对象 --- 封箱
//Integer in = new Integer(i);
//自动封箱/拆箱是JDK1.5的特性之一
//将基本类型的数据直接赋值给了对应的引用类型的对象 --- 自动封箱
//自动封箱在底层会默认调用Integer类身上的静态方法valueOf
//Integer in = Integer.valueOf(i);
//Integer in = i;
//double d = 3.5;
//Double dou = Double.valueOf(d);
//Double dou = d;
//char c = 'a';
//Character ch = c;
Integerin = new Integer(5);
//将引用类型的对象直接赋值给了对应的基本类型的变量 --- 自动拆箱
//自动拆箱在底层会默认调用对象身上的***Value()
//int i = in.intValue();
inti = in;
Doubledou = new Double(2.8);
//Double d = dou.doubleValue();
doubled = dou;
Booleanbo = new Boolean(false);
//boolean b = bo.booleanValue();
booleanb = bo;
}
}
9.package cn.tedu.regex;
publicclassPatternDemo1 {
publicstaticvoid main(String[] args) {
// Stringstr= "va87gg[bq;903h/0gvd'sga9gsd";
// System.out.println(str.replace('0',
'-'));
// 将所有的数字替换为-
//
System.out.println(str.replaceAll("\\d", "-"));
// 将所有非数字全部去掉
//
System.out.println(str.replaceAll("\\D", ""));
// Stringstr= "Cat Dog Pig Mouse Snake";
// 交换Dog和Snake的顺序
// 在replaceAll中可以$n的形式引用前一个正则中对应编号的捕获组
//
System.out.println(str.replaceAll("(Cat )(Dog)( Pig Mouse )(Snake)",
//
"$1$4$3$2"));
Stringstr = "我我我我我我我我爱爱爱爱学学学习习习习习习习习习习习";
// 我爱学习
System.out.println(str.replaceAll("(.)\\1+", "$1"));
}
}
10/
packagecn.tedu.regex;
importjava.util.Scanner;
publicclassPatternExer3 {
@SuppressWarnings("resource")
publicstaticvoid main(String[] args) {
Scanners = newScanner(System.in);
Stringstr = s.next();
// 记录字符串的原长度 --- 碎片的总长度
doublelen = str.length();
// 将字符串中所有的叠字替换为单字
str = str.replaceAll("(.)\\1+", "$1");
// 替换之后的长度就是碎片的个数
// 计算碎片的平均长度
System.out.println(len / str.length());
}
11
package cn.tedu.time;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
import java.util.Date;
public class DateDemo{
public static void main(String[] args) throwsException {
//获取当前的系统时间
// Date date = new Date();
//这个方法在1900-01的基础上来进行累加
//@SuppressWarnings("deprecation")
//这个方法已过时
//已过时指当前方法可以使用但是不推荐使用,在后续版本中可能会随时抛弃
// Date date = new Date(2000 - 1900, 2 - 1,9);
// 2000-12-15
// 2000.12.15
// 2000/12/15
// 12/15/2000
// 90.12.15
//将字符串转化为日期
SimpleDateFormat sdf = newSimpleDateFormat("yyyy.MM.dd HH:mm:ss");//定义日期格式
Date date = sdf.parse("2000.12.1518:58:45");//parse解析一次,可以多次使用
String str1 = sdf.format(date);//format格式
System.out.println(str1);
//将日期转化为字符串
// XX年XX月XX日
// XX时XX分XX秒
SimpleDateFormat sdf2=newSimpleDateFormat("yyyy年dd月dd日\tHH时mm分ss秒");
//可有可无,因为上面已经解析过一个日期了
Date date2=sdf2.parse("2000年11月15日 18时58分45秒");
String Str2=sdf2.format(date);
System.out.println(Str2);
Calendar c = Calendar.getInstance();
System.out.println(c);
}
}
11/
packagecn.tedu.exception;
publicclassExceptionDemo7 {
publicstaticvoid main(String[] args) {
System.out.println(m());
}
publicstatic Person m() {
Personp = new Person();
try {
p.setName("如花");
p.setAge(80);
// p是对象,所以return的是p的地址
returnp;
}finally {
p.setName("周星星");
p.setAge(18);
}
}
}
class Person {
private String name;
privateintage;
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
publicint getAge() {
returnage;
}
publicvoid setAge(intage) {
this.age = age;
}
@Override
public String toString() {
return"Person [name=" + name + ",
age=" + age + "]";
}
}
12/
packagecn.tedu.exception;
publicclassExceptionDemo4 {
publicstaticvoid main(String[] args) {
try {
//
System.out.println(1 / 0);
System.out.println(10
/ 2);
}catch (Exception e) {
e.printStackTrace();
}finally {
// 无论出现了异常与否,finally都会执行一次。
System.out.println("finally
running~~~");
}
System.out.println(m());
}
@SuppressWarnings("finally")
publicstaticint m() {
// 在try-catch出现的情况下,
// JVM在编译的时候认为try不一定能够执行成功
// 就意味着try中不一定能够正常返回结果
try {
return 1;
}catch (Exception e) {
e.printStackTrace();
// return
3;
}finally {
return 9;
}
// return
4;
}
}
13/
packagecn.tedu.collection;
importjava.util.Arrays;
publicclass ListExer {
}
class ArrList {
private String[] data;
// 记录元素的个数
privateintsize = 0;
public ArrList() {
data = new String[10];
}
public ArrList(intinitialCapacity) {
if (initialCapacity< 0)
thrownew IllegalArgumentException();
data = new String[initialCapacity];
}
// 添加元素
publicvoid add(String str) {
// 判断是否需要扩容
if (size>= data.length)
this.grow();
data[size++] = str;
}
// 扩容
privatevoid grow() {
if (data.length<= 1)
data= Arrays.copyOf(data, data.length + 1);
else
data= Arrays.copyOf(data, data.length + (data.length>>
1));
}
// 插入元素
publicvoid add(intindex, String str) {
// 判断下标越界
if (index>size)
thrownew IndexOutOfBoundsException("Index:" + index + ",
Size:" + size);
// 判断扩容
if (size>= data.length)
this.grow();
// 挪动元素空出对应的位置
// for (inti = size - 1; i >= index; i--) {
// data[i
+ 1] = data[i];
// }
// // 插入元素
//data[index] =str;
System.arraycopy(data, index, data, index + 1, size - index);
size++;
}
publicvoid remove(intindex) {
// 判断下标越界
if (index>= size)
thrownew IndexOutOfBoundsException("Index:" + index + ",
Size:" + size);
// for(inti = index; i < size - 1; i++){
// data[i]
= data[i + 1];
// }
System.arraycopy(data, index + 1, data, index, size - (index + 1));
size--;
}
}
13
packagecn.tedu.collection;
importjava.util.ArrayList;
importjava.util.Collection;
public classCollectionDemo {
public static void main(String[] args) {
//集合中存储的元素类型是String
Collection c = newArrayList();
//添加元素
c.add("gwe");
c.add("hred");
c.add("hrd");
c.add("ater");
//将集合转化为数组
// String[] os = (String[]) c.toArray();
// Object[] os = c.toArray();
// for (Object o : os) {
// System.out.println(((String)o).length());
// }
String[] strs = c.toArray(new String[0]);
for (String str : strs) {
System.out.println(str.length());
}
//获取集合中的元素个数
// System.out.println(c.size());
//清空集合
// c.clear();
//判断集合是否为空
// System.out.println(c.isEmpty());
//判断元素是否存在
//System.out.println(c.contains("hrd"));
//System.out.println(c.contains("aft"));
//从集合中移除指定的元素
// c.remove("gwe");
//如果元素不存在,会直接跳过
// c.remove("age");
System.out.println(c);
}
}