学习java的第十一天
单例设计模式之饿汉式
public class Singleton1 {
//单例设计模式之饿汉式
//1,无参构造方法私有化
private Singleton1(){}
//2,在类中申明本类对象,private static修饰的成员变量随着类的加载而加载,且只假造一次
private static Singleton1 instance = new Singleton1();
//3,提供公共访问方法
public static Singleton1 getInstance(){
return instance;
}
}
public class Test1 {
public static void main(String[] args) {
Singleton1 instance1 = Singleton1.getInstance();
Singleton1 instance2 = Singleton1.getInstance();
System.out.println(instance1.equals(instance2));
}
}
单例设计模式之懒汉式
public class Singleton2 {
//单例设计模式之懒汉式
//1,无参构造方法私有化
private Singleton2(){}
//2,在类中申明本类引用,private static修饰
private static Singleton2 instance = null;
//3,提供公共访问方法
public static Singleton2 getInstance(){
if(instance == null){
instance = new Singleton2();
}
return instance;
}
}
public class Test2 {
public static void main(String[] args) {
Singleton2 instance1 = Singleton2.getInstance();
Singleton2 instance2 = Singleton2.getInstance();
System.out.println(instance1.equals(instance2));
}
}
作业:
// String的主要方法有哪些
//charAt(int):得到某个序号位置的字符。getBytes():得到当前字符串转换成的字节数组。int compareTo(String):比较两个字符串的大小。
//startWith(String):判断字符串是否以某个字符串开头。endsWith(String):判断字符串是否以某个字符串结尾。
//lastIndexOf(String):从后面开始查找。
//subString(int):从某个位置开始截取字符串后面所有的内容。concat(String):拼接两个字符串。
//replaceAll(String, String):将字符串中的某个字符串替换成其他内容,替换所有的。
//toLowerCase():转换成小写。intern():得到当前字符串对应的常量池中的内容。
// String和StringBuilder 的区别
//String:字符串常量,线程安全的,如果要操作少量的数据用 String;StringBuilder:字符串变量,线程非安全的,
// StringBuilder和StringBuffer的区别
//StringBuilder:字符串变量,线程非安全的,单线程操作字符串缓冲区下操作大量数据 ;StringBuffer:字符串变量,线程安全的,多线程操作字符串缓冲区下操作大量数据
1、输入邮箱和密码,进行登录验证:
// 1)判断邮箱和密码是否为空
// 2)判断密码不能小于6位
// 3)判断@的位置在.之前
// 4)判断邮箱为zhangsan@163.com,密码为666666就登录成功
// 5)截取@前面的用户名,输出:欢迎, xxx
public class Demo02 {
public static void main(String[] args) {
// 1、输入邮箱和密码,进行登录验证:
Scanner sc = new Scanner(System.in);
System.out.println("请输入163邮箱账号");
String m = sc.nextLine();
// 1)判断邮箱和密码是否为空
//trim():去掉字符串两边的空格。isEmpty():判断字符串是否为空。
String user = m.trim();
if(user.isEmpty()){
System.out.println("您输入账号为空");
return;
}
System.out.println("请输入密码");
String n = sc.nextLine();
String username = n.trim();
if(username.isEmpty()){
System.out.println("您输入密码为空");
return;
}
// 2)判断密码不能小于6位
//length():得到字符串的长度。
if(username.length() < 6){
System.out.println("您输入密码小于6位数");
return;
}
// 3)判断@的位置在.之前
//indexOf(String):判断当前字符串是否包含某个字符串,如果包含,返回开始的位置,如果不包含,返回-1。
if(user.indexOf("@") > user.indexOf(".")){
System.out.println("您的账号格式输入有误");
return;
}
// 4)判断邮箱为zhangsan@163.com,密码为666666就登录成功
//equals(String):判断当前字符串与其他字符串是否相同。
if(user.equals("zhangsan@163.com") && username.equals("666666")){
// 5)截取@前面的用户名,输出:欢迎, xxx
//subString(int, int):从某个位置开始截取字符串,到达另一个位置为止。
System.out.println("欢迎,"+user.substring(0, (user.indexOf("@")))+"用户,登陆成功");
}else {
System.out.println("您的账号或密码输入有误");
}
}
}
2、nextLine()输入一个字符串,包含多个单词,单词之间以空格分隔;要求将所有单词连接起来,并且首字母大写;如:输入 good good study 获得:GoodGoodStudy
// 1、分割 2、截取首字母 3、转大写 4、拼接
public class Demo03 {
public static void main(String[] args) {
// 2、nextLine()输入一个字符串,包含多个单词,单词之间以空格分隔;要求将所有单词连接起来,并且首字母大写;
//如:输入 good good study 获得:GoodGoodStudy
// 1、分割 2、截取首字母 3、转大写 4、拼接
// split(String):依据某一个字符串进行切割,变成一个字符串数组。
// toUpperCase():转换成大写。static join(String,String...)将一个数组中的内容通过某个符号拼接成一个字符串。
// 输入一个字符串
Scanner Sc = new Scanner(System.in);
System.out.println("输入一个字符串,包含多个单词,单词之间以空格分隔");
String str = Sc.nextLine();
// 1对输入的字符串按照空格分割为多个字符串
String[] s = str.split(" ");
System.out.println("将字符串中单词之间的空格去除后输出:");
for (String string : s) {
System.out.print(string);
}
System.out.println("\n"+"将字符串中单词的首字母转换为大写后输出:");
for (int i = 0; i < s.length; i++) {
//s[i].substring(0, 1).toLowerCase()将单词首字母小写转为大写
//s[i].substring(1).toLowerCase()将单词首字母除外的字母大写转为小写
//进行字符串拼接
String s1 = s[i].substring(0, 1).toUpperCase() + s[i].substring(1).toLowerCase();
// 将输入的字符按要求不换行输出
System.out.print(s1);
}
}
}
3、
// 1) 以格式“2017/08/07 12:00:01 上午” 显示当前时间;
// 2) 输入日期,格式为"2017/08/07 08:12"
// 输出该日期后的10天是什么时间
public class Demo04 {
public static void main(String[] args) {
// 3、
// 1) 以格式“2017/08/07 12:00:01 上午” 显示当前时间;
//
// 2) 输入日期,格式为"2017/08/07 08:12"
//
// 输出该日期后的10天是什么时间
// 得到当前日期时间
Date now = new Date();
System.out.println(now);
// 格式化日期时间
// yyyy表示年,MM表示月, mm表示分钟,dd表示日期,HH表示24小时制的小时,hh表示12小时制的小时,ss表示秒,SSS表示毫秒
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/ HH:mm:ss 上午");
// 将时间格式化成字符串
String string = sdf.format(now);
System.out.println(string);
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd/ HH:mm");
String str = "2017/08/07/ 08:12";
try {
// 将字符串格式化成时间
Date date = df.parse(str);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_YEAR,10);
System.out.println("该日期10天后的日期为:"+df.format(cal.getTime()));
} catch (ParseException e) {
System.out.println("你输入的格式不正确");
e.printStackTrace();
}
}
}