String:不可变字符串,对其做的任何替换,查找,修改等操作都是
拷贝了原字符串,对拷贝的副本进行操作并返回
//方式1:直接赋值
String str1 = "hello world";
//方式2:通过字符数组创建字符串
char[] data = {'y', 'o', 'u'};
String str2 = new String(data);
System.out.println(str2);
//方式3:通过字符数组的某一部分创建字符串
char[] charArray = {'l', 'o', 'v', 'e'};
String str3 = new String(charArray, 2, 2);
//参数2:是从哪个字符开始 参数3:是截取几个(长度)
System.out.println(str3);
//方式4:通过字符创建另一个字符串
String str4 = new String(str1);
//注意经常用于可变转不可变字符串
System.out.println(str4);
//方式1: == 比较的是字符串的地址
String str5 = "haha"; //常量区
String str6 = new String("haha");// 堆区
System.out.println(str5 == str6); //false
String str7 = "haha";
System.out.println(str5 == str7); //true
//方式2: equals 只比较值
System.out.println(str5.equals(str6));// true
System.out.println(str5.equals(str7));// true
//方式3:equalsIgnoreCase 忽略大小写
str6 = "HaHa";
System.out.println(str5.equalsIgnoreCase(str6));
//endWith: 判断字符串以..结尾
String str8 = "变形金刚.avi";
System.out.println(str8.endsWith("vi"));
//startWith: 判断字符串以..开头
String str9 = "前车之鉴,后车之师";
System.out.println(str9.startsWith("前车"));
//compareTo: 字符串比较,是逐个字符进行比较,返回值是ASCII值
str8 = "ABC";
str9 = "ABc";
System.out.println(str8.compareTo(str9));
//compareToIgnoreCase 忽略大小写
System.out.println(str8.compareToIgnoreCase(str9));
String str10 = "you are beautiful";//空格也算一个长度
System.out.println(str10.length());
str10 = "好好学习哇!";//符号也是一个长度
System.out.println(str10.length());
String str11 = null;
String str12 = "";
//禁止 null调用任何对象的方法
if(str11 != null && str11.length() != 0) {
System.out.println(str11 + "不是空字符串");
}else {
System.out.println(str11 + "是空字符串");
}
//isEmpty() 判断是否为空 如果为空则为true
System.out.println(str12.isEmpty());//true
//另一种方式 判断空串
if(str12 != null && !str12.isEmpty()) {
System.out.println("不是空字符串");
}else {
System.out.println("是空字符串");
}
String str13 = "lucky dog";
//大写toUpperCase()
System.out.println(str13.toUpperCase());
System.out.println(str13);//原字符串没有变换
//小写 toLowerCase()
str13 = "Lucky Dog";
String lowerStr = str13.toLowerCase();
System.out.println(lowerStr);
System.out.println(str13);
//字符串转数组
char[] charArr = str13.toCharArray();
for(int i = 0; i < charArr.length; i++) {
System.out.println(charArr[i]);
}
//转其他类型
int a = 5566;
//方式1:拼接空字符串
String s1 = a + "";
System.out.println(s1);
//方式2: String.valueOf(数据)
String s2 = String.valueOf(a);
//valueOf(此处基本数据类型皆可转换)
//字符串转其他类型
String s3 = "2020520";
//方式1:其他数据类型.valueOf(字符串) 即可转换
int b = Integer.valueOf(s3);
double c = Double.valueOf(s3);
float d = Float.valueOf(s3);
//方式2: 其他类型.parse其他类型(字符串)
long e = Long.parseLong(s3);
String s4 = "true";
boolean f = Boolean.parseBoolean(s4);
String s5 = "you see see you! ";
String s6 = "one day day!";
//方式1: +
System.out.println(s5 + s6);
//方式2: concat
String s7 = s5.concat(s6);
System.out.println(s7);
String s8 = "大学生活好啊!好吗?你说好就好!";//16
//方式1:indexOf()正向查找,返回第一次出现的位置,找不到就返回-1
System.out.println(s8.indexOf("好呀"));//从0开始
System.out.println(s8.lastIndexOf("好"));//最后一次出现的位置
System.out.println(s8.indexOf("好", 5));
//方式2:contains 是否包含 boolean类型返回值
System.out.println(s8.contains("生活好"));
String str = "矮是什么感觉?就是所有人看见我都抬不起头";
//方式1: charAt() 通过下标 获取某个字符
System.out.println(str.charAt(2));
//方式2: substring()
System.out.println(str.substring(7));
System.out.println(str.substring(10, 15));
String s9 = "瘦,走路是什么感觉?应该就是走路都得扶着电线杆";
//方式1:replace() 就是把字符串中所有匹配到的字符串进行替换
System.out.println(s9.replace("走路", "刮风"));
//方式2:replaceFirst() 只替换第一个
System.out.println(s9.replaceFirst("走路", "放屁"));
String s10 = "www|cctv|com";
String[] strArray = s10.split("\\|");
for(int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
s10 = "www.cctv|com";
// split(" | ") 单竖杠 是或者! 所以才需要添加\\转义
strArray = s10.split("\\.|\\|");
for(int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
String s11 = " 哈哈";
System.out.println(s11);
System.out.println(s11.trim());
StringBuffer:可变字符串,对其做的增删改查操作都是直接修改
了原字符串!当然也可以接受返回值,是修改后的结果!
//1.创建可变字符串
StringBuffer strBuffer = new StringBuffer();
System.out.println(strBuffer);
//2.拼接字符串
strBuffer.append("少年啊!");
System.out.println(strBuffer);
strBuffer.append("你好帅啊!");
//3.按照下标插入字符串
strBuffer.insert(0, "啊哈!");
System.out.println(strBuffer);
//4.替换字符串
strBuffer.replace(9, 10, "傻乎乎");
System.out.println(strBuffer);
//5.删除字符串
strBuffer.delete(9, 12);
System.out.println(strBuffer);
//6.字符串反转
strBuffer.reverse();
System.out.println(strBuffer);
String s3 = "hahaha";
String s4 = s3.toUpperCase();
System.out.println(s3);
System.out.println(s4);
//所以! 可变字符串---->不可变字符换
//方式1
String s1 = new String(strBuffer);
System.out.println(s1);
//方式2
String s2 = strBuffer.toString();
System.out.println(s2);
Math: 数学类 该类中包含了跟数学相关的公式
//1.圆周率
System.out.println(Math.PI);
//2.自然常数
System.out.println(Math.E);
//3.求绝对值
System.out.println(Math.abs(-10));
System.out.println(Math.abs(99));
//4.求最大值
System.out.println(Math.max(80, 78));
//5.求两个数的最小值
System.out.println(Math.min(45, 8));
//6.求开方
System.out.println(Math.sqrt(4));
//7.求某数的任意次方
System.out.println(Math.pow(8, 2));
//8.取整系列
//向上取整:取比这个数最大的最小整数
System.out.println(Math.ceil(9.1));
System.out.println(Math.ceil(9.0));
//向下取整:取比这个数小的最大整数
System.out.println(Math.floor(8.9));
System.out.println(Math.floor(8.1));
//四舍五入
System.out.println(Math.round(7.6));
System.out.println(Math.round(7.4));
//取离这个数最近的整数
System.out.println(Math.rint(8.7));
1.基本数据类型:
int byte short long float char boolean
2.引用数据类型(包装类型)
它的根类都是Object 可以通过new来创建
基本类型 包装类型
int Integer
byte Byte
short Short
char Character
long Long
float Float
double Double
boolean Boolean
装箱:把基本数据类型 转为 引用数据类型的过程
拆箱:把数据类型 转为 基本数据类型
int a=10;
Integer a1=new Integer(a);//装箱
int b=a1;//拆箱
Integer c=10;
Integer[] num= {8,9,10};
//注意数据类型之间的转换,包括装箱和拆箱都会消耗系统资源!
//所以,编码时选择合适的数据类型尽量少做转换!
泛型: 就是可以把 数据类型作为参数进行传递使用方式
创建类的时候,可以使用
的类型的位置!占位符一般单字母大写!
优点:
1.提高了代码的复用性
2.降低数据类型之间的差异化以及类型转换带来的系统消耗
缺点:
1.不能使用泛型进行算数运算,逻辑运算但可以字符拼接
2.不能使用基本数据类型,必须使用对象数据类型
创建一个Interage类
public class Interage {
public void printString(int a) {
System.out.println(a);
}
public void concatString(int a1,int a2) {
System.out.println(a1+a2);
}
创建一个StringTest类
public class StringTest {
public void printString(String str) {
System.out.println(str);
}
public void concatString(String str1,String str2) {
System.out.println(str1+str2);
}
创建一个泛型类如下
public class TypeTest<M,N> {
public void print(M a,N b) {
System.out.println(a);
System.out.println(b);
}
创建一个测试类
public static void main(String[] args) {
Interage interage=new Interage();
interage.printString(1);
//这是一个字符串
StringTest stringTest=new StringTest();
stringTest.concatString("哈哈哈", "你好");
//new对象的时候直接在<>里写上数据类型就可以了方便
TypeTest<String, String> typeTest=new TypeTest<>();
typeTest.print("哈哈哈", "再见");
TypeTest<Double, Boolean> typeTest2=new TypeTest<>();
typeTest2.print(99.1, false);
}
public static void main(String[] args) throws ParseException {
//Date 日期
//1.创建日期对象
Date date=new Date();//此时,获取的是系统日期
System.out.println(date);
//带参创建
Date date1=new Date(2020-1900, 1-1, 5);
System.out.println(date1);
//年份从1900年算起 月份从0 开始(1月-12月表示0-11)
//2.获取年份中的信息
int year=date.getYear()+1900;
System.out.println(year);
int month =date.getMonth();
System.out.println(month+1);
int day=date.getDate();
System.out.println(day);
//getDay()是获取星期 0代表星期天
System.out.println(date.getDay());
int hours=date.getMinutes();
System.out.println(hours);
int minutes=date.getMinutes();
System.out.println(minutes );
int seconds=date.getSeconds();
System.out.println(seconds);
//注意:重要!getTime()获取的是1970年到此日期的毫秒
//1000毫秒=1秒
//用来计算两个日期的时间间隔!!
long timer=date.getTime();
System.out.println(timer);
Date yesterDay=new Date(2020-1900,1-1,4,17,23);
long lastTimer=yesterDay.getTime();
long result=(timer-lastTimer)/1000/60/60;
System.out.println(result);
//------------------
//Date和String的相互转换
//MM 月份,mm 分钟,HH 24小时制
SimpleDateFormat format=new SimpleDateFormat
("yyyy-MM-dd HH:mm:ss");
String dateStr=format.format(date);
System.out.println(dateStr);
//String与Date
String strTime="2000年09月09日 12:22:54";
SimpleDateFormat format2=new SimpleDateFormat
("yyyy年MM月dd日 HH:mm:ss");
Date newDate=null;
newDate=format2.parse(strTime);
System.out.println(newDate);
}
注意有的方法划线是不再使用了