*包装类: 将基本类型封装成类,其中包含属性和方法以方便对象操作。
*byte---->Byte
*short--->Short
*long--->Long
*float--->Float
*double--->Double
*boolean--->Boolean
*int--->Integer
*char---->Character
* 装箱:将基本数据类型转换成包装类型。
* 拆箱:将包装类型转换成基本数据类型。
* 从JDK1.5之后支持自动装箱和拆箱。
public class Test { public static void main(String[] args) { Integer i = new Integer(123);//装箱 int i2 = i.intValue();//拆箱 Integer i3 = 123;//自动装箱 int i4=i;//自动拆箱 System.out.println("Integer的最大值:"+Integer.MAX_VALUE); System.out.println("Integer的最小值:"+Integer.MIN_VALUE); System.out.println("123对应的二进制为:"+Integer.toBinaryString(123)); System.out.println("123对应的八进制为:"+Integer.toOctalString(123)); System.out.println("123对应的十六进制为:"+Integer.toHexString(123)); Integer i5 = Integer.valueOf("1234");//将一个字符串转换成Integer int i6 = Integer.parseInt("1234"); } }
==和equals在包装中的比较:
public class TestString { public static void main(String[] args) { String str1 = "zzsxt"; String str2 = "zzsxt"; String str3 = new String("zzsxt"); String str4 = new String("zzsxt"); System.out.println(str1==str2);//true System.out.println(str1.equals(str2));//true System.out.println(str3==str4);//false System.out.println(str3.equals(str4));//true
System.out.println(str1.equals(str3)); //true
System.out.println(str1==str3); //false
} }
public class Test { public static void main(String[] args) { Integer i=new Integer(1); Integer i2=new Integer(1); int i3=1; int i4=1; System.out.println(i==i2);//false System.out.println(i==i3);//true System.out.println(i3==i4);//true System.out.println(i.equals(i2));//true System.out.println(i.equals(i3));//true } }
*java.lang.String:不可变的字符序列。
*常用的构造方法
*String(String original)
*String()
*String(char[] value)
*常用的方法:
*length():获取字符串的长度
*charAt(int index):查看指定下标的字符,字符串的下标从零开始
*toUpperCase():转大写
*toLowerCase():转小写
*equals(String s):比较字符串的内容是否相等
*equalsIgnoreCase(String s):忽略大小写比较内容是否相等
*indexOf(String s):索引指定字符串s在当前字符串的出现的下标位置,如果查找不到返回-1,如果存在多个将返回第一个字符串的下标位置
*lastIndexOf(String s):索引指定字符串s在当前字符串的最后出现的下标位置
*substring(int begin):字符串截取从begin开始截取到最后。
*substring(int begin,end):字符截取从begin开始,到end-1结束。不包含end位置
*trim():去掉前后空格,中间空格无法去除。
*startsWith(String s):测试此字符串是否以指定的前缀开始
*endsWith(String s):测试此字符串是否以指定的后缀结束
public class TestString2 { public static void main(String[] args) { String str=new String(" hello, zzsxt! "); String str2=new String("Hello,zzsxt!"); System.out.println("字符串长度:"+str.length()); System.out.println("下标为3的字符:"+str.charAt(3)); System.out.println("将字符串转大写:"+str.toUpperCase()); System.out.println("将字符串转小写:"+str.toLowerCase()); System.out.println("比较字符串的内容是否相等:"+str.equals(str2)); System.out.println("忽略大小写比较字符串的内容是否相等:"+str.equalsIgnoreCase(str2)); System.out.println("索引字符串中的指定字符的第一次出现的位置:"+str.indexOf("a"));// System.out.println("索引字符串中的指定字符的最后一次出现的位置:"+str.lastIndexOf("l"));// System.out.println("字符串的截取,从指定位置开始截取到最后:"+str.substring(2));// System.out.println("字符串的截取,从begin位置开始截取到end-1:"+str.substring(0,5));// System.out.println("去掉字符串的前后空格:"+str.trim());// System.out.println("测试此字符串是否以指定的前缀开始:"+str2.startsWith("Hel"));// System.out.println("测试此字符串是否以指定的后缀结束:"+str2.endsWith("!"));// } }
public class TestString3 { public static void main(String[] args) { String str="hello,bjsxt!"; str=str.replace('!', '.'); // '!' 替换 '.' str = str.replace("bjsxt", "zzsxt"); System.out.println(str);
String str2="java,html,oralce,mysql"; String[] strs = str2.split(","); //以,号为标准前后转换为数组元素 for (String string : strs) { System.out.println(string); } // String str3 = str.concat(str2);//连接字符串 String str3 = str+str2; //同连接字符串 System.out.println(str3); } }
* String:不可变的字符序列
* StringBuffer可变的字符序列,线程安全,在多线程中使用,效率较低。
* StringBuilder:可变的字符序列,非线程安全的,效率较高。
*
* 线程安全:在多线程中使用,类似于信号灯。
insert:
import java.util.Scanner; public class StringB { public static void main(String[] args) { Scanner input=new Scanner(System.in); System.out.println("请输入字符串"); String s=input.next(); StringBuffer ss=new StringBuffer(s); for(int x=s.length()-3;x>0;x-=3){ ss.insert(x, ","); } System.out.println(ss); } }
Builder:
public class TestStringBuilder { public static void main(String[] args) { StringBuilder sb=new StringBuilder(); long start = System.currentTimeMillis(); for (int i = 0; i <1000000; i++) { sb.append(i); } long end = System.currentTimeMillis(); System.out.println("总耗时:"+(end-start)+"毫秒"); StringBuffer sb2 = new StringBuffer("hello"); // sb2=sb2.delete(2, 4); sb2=sb2.reverse();//反转 System.out.println(sb2); } }
java.util.Date:
*常用的构造方法:
* Date()
* Date(int year, int month, int date) 已过时
* Date(long date)
*常用的方法:
*getYear()返回一个值,此值是从包含或开始于此 Date 对象表示的瞬间的年份减去 1900 的结果
*getMonth()返回表示月份的数字,返回的值在 0 和 11 之间,值 0 表示 1 月。
*getDate():返回此 Date 对象表示的月份中的某一天。
*
*java.text.DateFormat:格式化日期,抽象类
*java.text.SimpleDateFormat继承DateFormat.
* SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类
* yyyy:年,MM:月 dd:日 hh:小时(12进制) HH:小时(24进制) mm:分钟 ss:秒
import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class TestDate { public static void main(String[] args) { Date date = new Date(); // System.out.println(date); // int year = date.getYear();//获取年份 // int month = date.getMonth();//获取月份 // int day = date.getDate();//获取日期 // int hour = date.getHours();//获取小时 // int min = date.getMinutes();//获取分钟 // int sec = date.getSeconds();//获取秒 // String str = year+"-"+month+"-"+day+" "+hour+":"+min+":"+sec; // System.out.println(str); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str = dateFormat.format(date); System.out.println(str); } }
日期转字符串与字符串转日期:
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TestDate21 { public static void main(String[] args) { Date date=new Date(); DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String s=dateFormat.format(date); System.out.println(s); //日期转字符串输出 String s2="2018-11-11"; //字符串转为日期 SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd"); try { Date date2=simpleDateFormat.parse(s2); System.out.println(date.after(date2));//测试date是否在date2之后 false } catch (ParseException e) { e.printStackTrace(); } } }
日历题:
* 可视化日历
* 实现思路:
* 1.获取用户输入的日期字符串,并将其转换为日期
* 2.将日期转为日历
* 3.获取当前月份第一天是星期几?
* 4.获取当前月份总共有多少天
* 5.输出日期
* 当前日期前加*标示,星期六换行。
public class TestVisualCalendar { public static void main(String[] args) { //1.获取用户输入的日期字符串 System.out.println("请输入日期:格式(yyyy-MM-dd)"); Scanner input = new Scanner(System.in); String dateStr = input.next(); //2.将日期字符串转换为日期 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { Date date = dateFormat.parse(dateStr); //将日期转换为日历 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int day = calendar.get(Calendar.DATE);//获取当前日期 //3.获取当前月的第一天是周几 calendar.set(Calendar.DATE, 1);//将日期设置为1号 int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);//获取1号是星期几 //4.获取当前月份总共有多少天 int dayOfMonth = calendar.getActualMaximum(Calendar.DATE);//获取当前月份的最大天数(当前月总共有多少天) //5.输出 System.out.println("日\t一\t二\t三\t四\t五\t六"); //输出1号之前的空格 for(int i=1;i<dayOfWeek;i++){ System.out.print("\t"); } //输出日期 for(int i=1;i<=dayOfMonth;i++){ //标示当前日期 if(i==day){ System.out.print("*"); } //输出日期 System.out.print(i+"\t"); int w = calendar.get(Calendar.DAY_OF_WEEK);//当前是星期几 if(w==Calendar.SATURDAY){//周六换行 System.out.println(); } calendar.add(Calendar.DATE, 1);//更改当前日期 } } catch (ParseException e) { e.printStackTrace(); } } }
Calendar:
import java.util.Calendar; /** *java.util.Calendar类:Calendar 类是一个抽象类,可以设置或获取日期中的指定部分。 *get(int field):返回给定日历字段的值。 *set(int field, int value) 将给定的日历字段设置为给定值。 *add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。 *getActualMaximum(int field):返回指定日历字段可能拥有的最大值 */ public class TestCalendar { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, 2016); calendar.set(Calendar.MONTH, 2);//3月,月份的取值范围为0~11 calendar.set(Calendar.DATE, 1); calendar.add(Calendar.YEAR, 2); int year = calendar.get(Calendar.YEAR);//获取年份 int month = calendar.get(Calendar.MONTH);//获取月份 0~11 int date = calendar.get(Calendar.DATE);//获取日期 int hour = calendar.get(Calendar.HOUR);//小时 int min = calendar.get(Calendar.MINUTE);//分钟 int second = calendar.get(Calendar.SECOND);//秒 System.out.println(year+"-"+(month+1)+"-"+date+" "+hour+":"+min+":"+second); int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);//一年的第多少天 System.out.println("今天是一年中的第"+dayOfYear+"天"); int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);//一年中第几周 System.out.println("本周是一年第"+weekOfYear+"周"); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);//一周的第几天,星期天为一周第一天 System.out.println("今天是一周的第"+dayOfWeek+"天"); int max = calendar.getActualMaximum(Calendar.DATE); System.out.println(max); } }
Math:
* java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
* 常用的属性:PI圆周率
* abs(xxx a):返回 xxx值的绝对值。
* floor(double a) 返回最大的(最接近正无穷大)double 值,该值小于等于参数,并等于某个整数。
* round(double a) 返回最接近参数的 long。四舍五入
* max(int a, int b) 返回两个 int 值中较大的一个。
pow(double a, double b) 返回第一个参数的第二个参数次幂的值。
sqrt(double a) 返回正确舍入的 double 值的正平方根。
random() 返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。
public class TestMath { public static void main(String[] args) { System.out.println(Math.abs(-10)); System.out.println(Math.abs(-10.0)); System.out.println(Math.floor(12.9)); System.out.println(Math.round(12.4)); System.out.println(Math.max(12, 10)); System.out.println(Math.min(12, 10)); System.out.println(Math.pow(3,2)); System.out.println(Math.sqrt(9)); System.out.println(Math.random()); } }
Random类:
* java.util.Random类:此类的实例用于生成伪随机数流.
* 常用的构造方法
* Random() 创建一个新的随机数生成器。
*常用的方法:
*nextInt():返回一个int类型的随机数
*nextInt(int n);返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int 值
public class TestRandom { public static void main(String[] args) { Random random = new Random(10); for(int i=0;i<10;i++){ // int r = random.nextInt(); int r=random.nextInt(10); System.out.println(r); } } }
枚举:
*定义枚举类型:从JDK1.5之后增加的新特性
*语法:
*修饰符 enum 枚举名称{
* 值1,值2...;
*}
public enum Sex { 男,女 }
public class Student { private String name; private Sex sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public Sex getSex() { return sex; } public void setSex(Sex sex) { this.sex = sex; } public static void main(String[] args) { Student student = new Student(); student.name="张三"; student.sex=Sex.男; } }