1.八种基本数据类型和封装类:
byte->java.lang.Byte
short->java.lang.Short
int->java.lang.Integer
long->java.lang.Long
float->java.lang.Float
double->java.lang.Double
char->java.lang.Character
boolean->java.lang.Boolean
注:基本数据类型作成员变量:int(0),double(0.0),boolean(false)
封装类的默认值:都是null;
2.自动装箱:可以直接把一个基本数据类型赋值给包装类。eg://装箱 Integer d=8;
自动拆箱:可以直接把一个包装类对象,赋值给基本类型.eg?/拆箱 int e=new Integer(9);
3.String类:一个引用类型,最终类。它的值在创建之后不能更改
a.Java运行时会维护一个常量池, 常量池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。
b."==":比较两个对象的内存地址是否一样,一样返回true,否则返回false.
eg:
String str1=“abc”;
String str2=new String(“abc”);
String str3=“abc”;
//因为Str1和Str3直接赋值,所以他们的值是存在常量池中,而常量池中的值不重复,所以他们俩个指向的是同一个地址
System.out.println(str1==str3);//true
//因为Str1的值存在常量池中,而str2存在堆中,它们的内存地址不一样
System.out.println(str1==str2);//false
"equals()":比较两个对象的内存中存的具体内容,如果值内容一样返回true,否则返回false.
eg:System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));
2.1 String类(常量池,==和equals,常用方法)
String是不可变类, 即一旦一个String对象被创建, 包含在这个对象中的字符序列是不可改变的, 直至该对象被销毁。 String类是final类,不能有子类。
2.1.1 创建字符串对象
1、 使用new关键字 String s1 = new String(“ab”); //2、 使用字符串常量直接赋值String s2 = “abc”;3、 使用”+”运算符进行字符串连接String s3 = “abc” + “d”; String s4 = s3 + 5; //abcd5常量池概念: Java运行时会维护一个常量池, 常量池用来存放运行时中产生的各种字符串,并且池中的字符串的内容不重复。
2.1.2 String类型常用方法(增删改查)
2.1.2.1 获得新字符串的常用方法(拼接+替换)
-
String concat(String str) 在原有字符串的尾部添加参数字符串,返回一个新的字符串(总是堆内存中的对象),如果str的长度为0,则返回原字符串。str不能为空。
-
String subString(int beginIndex) 获得从beginIndex开始到结束的子字符串。( 包括beginIndex位置的字符)@姓名#内容
-
public String toLowerCase() 把字符串中的英文字符全部转换为小写字符,返回值为装换后的新的字符串。
-
public String toUpperCase() 把字符串中的英文字符全部转换为大写字符,返回值为装换后的新的字符串。
-
public String trim() 把字符串中的首尾空白字符去掉注册:请输入用户名 " " ""
-
public String replace(CharSequence target, CharSequence replacement) 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串我的电话是:123*******
-
public String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
-
public String replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
-
public replaceFirst(String regex, String replacement) 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
2.1.2.2 计算字符串长度的方法
public int length(); //返回字符串字符的个数。
2.1.2.3 字符串比较
1、””表示判断该两个字符串是否为同一对象,即在内存中的地址是否一样。如果一样则返回true 否则返回false; 和我们通常的是否为同一对象的是一样的。2、boolean equals(Object anObject) 将此字符串与指定的对象比较。注意此时比较的是内容是否相等(字符串类对此方法进行了覆写)。 例如:String s1 = new String(“abc”); String s2 = “abc” 则:s1s2 //false s1.equals(s2); //true4、 boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。例如:”abc”. equalsIgnoreCase(“AbC”); // true5、int compareTo(String value) 按字典顺序比较两个字符串。如果两个字符串相等,则返回 0;如果字符串在参数值之前,则返回值小于 0;如果字符串在参数值之后,则返回值 大于 0 a A6、int compareToIgnoreCase(String val) 按字典顺序比较两个字符串,不考虑大小写 A a7、boolean startsWith(String value) 检查一个字符串是否以参数字符串开始。8、boolean endsWith(String value) 检查一个字符串是否以参数个字符串结束。 注意:此处重点给大家讲解String中==和equlas的区别
2.1.2.4 字符串查找
练习:完成一个邮箱格式的校验 lhp@163.com(1),“@”不能在第一位(2),“.”不能在最后一位(3),“@”和“.”中间应该有字符(4),***@***.***(5)当然还有更严格的校验规则,我们此处考虑到这即可
2.1.2.5 其他数据类型转成字符串
在String类中定义了一些静态的重载方法public static String valueOf(…)可以将基本类型数据、Object类型转换为字符串。如:public static String valueOf(double d) 把double类型数据转成字符串public static String valueOf(Object obj) 调用obj的toString()方法得到它的字符串表示形式。 还有一种最简单的方法: “”+1;把任意对象、基本数据类型与一个空字符串相连接则可以直接转换成字符串,与上面效果相同。
append 追加字符
insert 用法 输出a我bcd
charat 替换字符
2.1.1 StringBuffer常用方法
public StringBuffer delete(int start,
int end)
移除此序列的子字符串中的字符。该子字符串从指定的 start 处开始,一直到索引 end - 1 处的字符,如果不存在这种字符,则一直到序列尾部。如果 start 等于 end,则不发生任何更改。
4.StringBuffer:一个线程安全可变字符系列。
5.StringBuilder与StringBuffer的用法完全一致,唯一的区别是StringBuffer是线程安全的,而StringBuilder不是线程安全的。所以StringBuilder的性能要比StringBuffer要好。单线程推荐使用StringBuilder,多线程使用StringBuffer。
6.Date:如果只是在java中用时间,首选java.util.Date.如果是java程序与数据库打交道,用java.sql.Date.
(1)System. currentTimeMillis() 获得当前的系统时间,单位毫秒。1秒=1000毫秒。
(2)Date today=new Date();获得当前的系统时间 :星期 月 日 时间 年份。
(3)过时了,能不用少用:将字符串转换为日期:Date today=new Date(“Tue Jul 03 14:23:26 CST 2018”);
格式化时间:SimpleDateFormat
7.SimpleDateFormat :将日期按照我们指定的格式转换字符串,也可以将日期格式的字符串转换为日期。
(1)将日期转换为字符串:SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
String stoday= sdf.format(today);
System.out.println(stoday);//2018-07-03 14:23:26
(2)将字符串转换为日期:Date dd=sdf.parse(str);
System.out.println("Str转换为日期为:"+dd);//Tue Jul 03 14:23:26 CST 2018
8.Calendar专门用来处理日期的
Calendar c=Calendar.getInstance();
//获得当前日期年份
System.out.println(“年:”+c.get(Calendar.YEAR));
//获得当前日期月份
int month=c.get(Calendar.MONTH)+1;
System.out.println(“月:”+month);
//获得当前日期月份
System.out.println(“日:”+c.get(Calendar.DATE));
//获得当前日期星期,星期天是第一天,星期一是第二天
System.out.println(“星期:”+c.get(Calendar.DAY_OF_WEEK));
//获得当前日期时
System.out.println(“时:”+c.get(Calendar.HOUR));//12小时制
System.out.println(“时:”+c.get(Calendar.HOUR_OF_DAY));//24小时 制
//获得当前日期分
System.out.println(“分:”+c.get(Calendar.MINUTE));
//获得当前日期秒
System.out.println(“秒:”+c.get(Calendar.SECOND));
9.Math:进行数字运算
int a=-5;
double b=5.6;
//求一个数的绝对值
//System.out.println(Math.abs(a));
//向上取整数
//System.out.println(Math.ceil(b));
//向下取整数
//System.out.println(Math.floor(b));
//四舍五入
//System.out.println(Math.round(b));
//计算一个数的平方根
//System.out.println(Math.sqrt(9));
//计算一个数的2的16次方
//System.out.println(Math.pow(2, 16));
//求两个数中的最大值
//System.out.println(Math.max(8, 10));//10
//求两个数中的最小值
//System.out.println(Math.min(8, 10));//8
//生成一个0到1之间的随机数 ,求一个范围的随机数:(int)(Math.random()*(max-min+1)+min)
System.out.println(Math.random());
10.静态导包:(了解) 当使用一个类里面的静态方法或者静态变量时,每次都需要写类名。如果不想写类名,想直接写方法名或者变量名,则可以考虑使用静态导入
语法:import static 包名.类名.*; //导入该类下的所有静态方法和常量
11.Random:生成随机数。
生成一个范围的随机数min-max: 公式: r.nextInt(max-min+1)+min
Random r=new Random();
int num=r.nextInt(10);//生成0-9的随机整数
12.System类:
//在控制台正常输出
// System.out.println(“我是中国人”);
// //在控制台输出错误信息
// System.err.println(“我爱中国”);
// //退出系统
// System.exit(0);//0正常退出,非0异常退出
// //获得系统的当前日期的毫秒数
// System.out.println(System.currentTimeMillis());
// //获得系统的所有属性
// Properties p=System.getProperties();
//获得系统的指定属性
String p1=System.getProperty("java.home");
13.Runtime类可以访问jvm的相关信息。
Runtime r=Runtime.getRuntime();
//返回 Java 虚拟机中的空闲内存量。
System.out.println(r.freeMemory());
//返回 Java 虚拟机试图使用的最大内存量
System.out.println(r.maxMemory());
//向 Java 虚拟机返回可用处理器的数目。
System.out.println(r.availableProcessors());