Javase day08_汇总

String

package com.neuedu.day08;

import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

import org.junit.Test;

public class Str {
	

// String // 已学的:length() equal() startWith endWith indexOf lastindexOf charAt // substring (int begin) substring(int begin,int end)字符串截取

@Test
	public void myTest01() {
		String a = "abc@http:www.baidu.comgaig";
		String suba = a.substring(2);// 从索引为2的位置开始截取,包括2
		System.out.println(suba);

		String suba2 = a.substring(2, 7);// start end-1
		System.out.println(suba2);
	}

//trim 去除字符串前后空格

@Test
	public void myTest02() {
		String a = " agfagag dagagag ";
		String suba = a.trim();// 去掉首尾的空格,不能去掉中间的空格
	}

//replace 替换

@Test
public void myTest03() {
	String a = "name: dagagagag";
	String suba = a.replace("name", "姓名");
	System.out.println(suba);
}
@Test
	public void myTest04() {
		java.lang.String a= "13901001139 ";
		java.lang.String suba=a.replaceAll("(\\d{3}\\d*(\\d{4})","$1****$2");
		System.out.println(suba);
	}

// split 重点拆分

@Test
	public void myTest05() {
		String a = "张三,18,13904001139;李四,19,13904001140;王五,20,13904001141";
		String[] users = a.split(";");
		for (int i = 0; i < users.length; i++) {
			String user = users[i];
			System.out.println(user);
			String[] userinfo = user.split(",");
			for (int j = 0; j < userinfo.length; j++) {
				System.out.println(userinfo[j]);
			}

		}
	}

// 编码方式比较 编码解码

@Test
public void myTest06() throws UnsupportedEncodingException {
	// 字节数 uft-8 3字节 国际化
	// gbk(中文简繁)+gb2312(中文简) 2字节 支持中文
	// iso8859-1 1字节
	String a = "中";
	byte[] bytes = a.getBytes("utf-8");
	System.out.println(bytes.length);
	byte[] gbks = a.getBytes("gbk");
	System.out.println(gbks.length);
	byte[] isos = a.getBytes("iso8859-1");
	System.out.println(isos.length);
	// 再转换成字符串
	String a_new = new String(bytes, "utf-8");
	System.out.println(a_new);
	String b_new = new String(gbks, "gbk");
	System.out.println(b_new);
	String c_new = new String(isos, "iso8859-1");
	System.out.println(c_new);
}

// StringBuffer // append // reverse

@Test
	public void myTest07() {
		StringBuffer s1 = new StringBuffer("select a.empno,a.ename,b.dname").append("from empa,dept b")
				.append("wgere a.deptno=b.deptno");// 字符串连接
		System.out.println(s1.toString());
	}
@Test
	public void myTest08() {
		StringBuffer s1 = new StringBuffer("select a.empno,a.ename,b.dname").append("from empa,dept b")
				.append("wgere a.deptno=b.deptno");// 字符串连接
		StringBuffer s1_new = s1.reverse();
		System.out.println(s1_new.toString());

	}
@Test
	public void myTest09() {
		StringBuffer s1 = new StringBuffer("123213");
		String s1_old = s1.toString();
		StringBuffer s1_new = s1.reverse();// reverse 内容反转
		System.out.println(s1_new.toString());
		if (s1.equals(s1_new)) {
			System.out.println("回文字");
		} else {
			System.out.println("不是回文字");
		}
	}
@Test
	public void test10() {
		/*
		 * String a = "123"; System.out.println(a.hashCode()); a=a+"45";
		 * System.out.println(a.hashCode());
		 */
		final StringBuffer sb = new StringBuffer("123");
		System.out.println(sb.hashCode());
		sb.append("45");
		System.out.println(sb.hashCode());
		// sb = new StringBuffer();
		System.out.println(sb.hashCode());

	}

// StringBuffer和StringB // Math类(简单)

@Test
	public void test11() {
		// round四舍五入 floor向下取整 ceil向上取整
		double d = 123.45;
		double d_new = Math.ceil(d);
		System.out.println(d_new);
		double d1 = 123.45;
		double d1_new = Math.floor(d);
		System.out.println(d1_new);
		double d2 = 123.51;
		double d2_new = Math.round(d);
		System.out.println(d2_new);
	}

// pow(int a,int b)a的b次方

@Test
public void test12() {
	double d = Math.pow(2, 4);
	System.out.println(d);
}

// 海伦公式,

@Test
	public void test13() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入三角形的三边");
		double a, b, c;
		a = sc.nextInt();
		b = sc.nextInt();
		c = sc.nextInt();
		double p = (a + b + c) / 2;
		double s = Math.sqrt(p * (p - a) * (p - b) * (p - c));
		System.out.println(s);

	}

// random取随机数

@Test
	public void test14() {
		// 0-1之间的数
		System.out.println(Math.random());
		// 0-10之间的数
		// 20-30之间的数
		System.out.println(20 + Math.random() * 11);
		// m-n之间的数 (m+Math.random()*(n-m+1));
		System.out.println((int) (20 + Math.random() * (30 - 20 + 1)));
	}

// 日期类(复杂一点) // 日期类和字符串的转换

@Test
	public void test15() {
		System.out.println(System.currentTimeMillis() / 1000);
		Date old = new Date(1591513151300l);// 日期格式
		System.out.println(old);

		Date now = new Date();
		System.out.println(now);

		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date current;
		try {
			current = sdf.parse("2020-08-14 14:17:28");// 字符串转时间
			System.out.println(current);
			java.lang.String s1 = sdf.format(current);
			System.out.println(s1);// 时间转字符串
		} catch (ParseException e) {
			System.out.println("日期格式不对");
			e.printStackTrace();
		}

	}
@Test
	public void test16() {
		Calendar c = Calendar.getInstance();
		c.set(2020, 5, 14);
		Date now = c.getTime();
		System.out.println(now);
		System.out.println(c.getFirstDayOfWeek());
		System.out.println(c.getTimeInMillis());
		System.out.println(c.getTimeZone());
		// 今年有多少星期
		System.out.println(c.getWeeksInWeekYear());
		// 年月日时分秒
		System.out.println(c.getWeekYear());
		System.out.println(c.get(c.YEAR));
		System.out.println(c.get(c.MONTH));
		System.out.println(c.get(c.DATE));
		System.out.println(c.get(c.HOUR));
		System.out.println(c.get(c.MINUTE));
		System.out.println(c.get(Calendar.SECOND));

		// WEEK_OF_YEAR WEEK_OF_MONTH DAY_OF_MONTH DAY_OF_YEAR DAY_OF_WEEK
		// DAY_OF_WEEK_IN_MONTH
		System.out.println(c.get(c.WEEK_OF_YEAR));// 38
		System.out.println(c.get(c.WEEK_OF_MONTH));// 3 当前日期在一个月里的第几周
		System.out.println(c.get(c.DAY_OF_MONTH));// 14
		System.out.println(c.get(c.DAY_OF_YEAR));// 258
		System.out.println(c.get(c.DAY_OF_WEEK));// 2 一个月当中的第几周
		System.out.println(c.get(c.DAY_OF_WEEK_IN_MONTH));// 2 计算当前日期的周N,是本月的第几个周N
	}

@Test
public void test17() {
Calendar c = Calendar.getInstance();
c.set(2020, 8, 14);
c.add(Calendar.HOUR, 3);
System.out.println(c.getTime());

}

// 单例模式

package com.neuedu.day08;
//懒汉式
public class SingletonLazy {
	// 定义一个私有的,静态的,类型为其本身的类变量

	private static SingletonLazy instance = null;

	// 无参构造方法私有化
	private SingletonLazy() {
		super();
	}
//3.公有的方法里实例化一次这个对象,给用户返回
	public static  SingletonLazy getInstance() {
		if(instance==null)
		instance =new SingletonLazy();
		return instance;
	}

	
}
	@Test
	public void test19() {
		SingletonLazy s1 = SingletonLazy.getInstance();
		SingletonLazy s2 = SingletonLazy.getInstance();
		System.out.println(s1);
		System.out.println(s2);

	}

}
package com.neuedu.day08;
//饿汉式
public class Singleton {
	// 定义一个私有的,静态的,类型为其本身的类变量

	private static Singleton instance = null;

	// 无参构造方法私有化
	private Singleton() {
		super();
	}
//3.公有的方法里实例化一次这个对象,给用户返回
	public static  Singleton getInstance() {
		return instance;
	}

	
}
@Test
	public void test18() {
		Singleton s1 = Singleton.getInstance();
		Singleton s2 = Singleton.getInstance();
		System.out.println(s1);
		System.out.println(s2);
	}

作业

package com.neuedu.day08;

import java.util.Random;
import java.util.Scanner;
 
import org.junit.Test;

1、分别在控制台输入字符串和子字符串,并计算字符串中子字符串出现的次数。

public class HomeWork {
	@Test
	public void myTest01() {
		Scanner sc = new Scanner(System.in);
		System.out.println("输入字符串");
		java.lang.String s = sc.next();
		System.out.println("输入子字符串");
		java.lang.String s1 = sc.next();
		int sum = 0;
		int length = s1.length();
		for (int i = 0; i < s.length() - s1.length() + 1; i++) {
			String S2 = new String(null, s1);
			java.lang.String s2 = s.substring(i, s1.length() + i);
			if (s2.equals(s1)) {
				sum++;
			}
		}
		System.out.println(sum);
	}

2、请编程实现:由键盘输入的任意一组字符,统计其中大写字母的个数m和小写字母的个数n,并输出m、n中的较大者。

@Test
public void myTest02() {
	Scanner sc = new Scanner(System.in);
	System.out.println("输入字符串");
	java.lang.String s = sc.next();
	int m = 0, n = 0;
	for (int i = 0; i < s.length(); i++) {
		if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') {
			m++;
		}
		if (s.charAt(i) >= 'a' && s.charAt(i) <= 'z') {
			n++;
		}
	}
	if (m >= n) {
		System.out.println(m);
	} else {
		System.out.println(n);
	}
}

3.有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。

@Test
	public void myTest03() {
		Scanner sc = new Scanner(System.in);
		System.out.println("输入字符串");
		java.lang.String s = sc.next();
		int ch = 0, en = 0, no = 0;
		for (int i = 0; i < s.length(); i++) {
			if ((s.charAt(i) >= 'a' && s.charAt(i) <= 'z') || (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z')) {
				en++;
			} else if ((s.charAt(i) >= '0' && s.charAt(i) <= '9')) {
				no++;
			} else {
				ch++;
			}

		}
		System.out.println("中文字符数" + ch);
		System.out.println("英文字符数" + en);
		System.out.println("数字字符数" + no);
	}

4、编写一个方法为物品生成一个指定长度的编号,
要求编号的每一位或者为0到9的数字,
或者为A到Z的大写字母,每次产生的编号是随机的。

	@Test
	public void myTest04() {
		Scanner sc = new Scanner(System.in);
		System.out.println("输入指定长度");
		int no = sc.nextInt();
		char s[] =new char[no];
		for(int i=0;i<no;i++)
		{
			long c= Math.round(Math.random()*500);
			int sum=(int) c;
			char s1=(char)sum;
			s[i]=s1;
			if(s[i]>='A'&&s[i]<='Z')
			{
				continue;
			}
			else if(s[i]>='0'&&s[i]<='9')
			{
				continue;
			}
			else
			{
				i--;
			}
		}
		for(int i=0;i<no;i++)
		{
			System.out.print(s[i]);
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值