- JAVA入门
- 封装——四个访问控制符
- 多态
- 对象的转型
- 抽象方法_抽象类
- 接口的定义和实现
- String类常用方法
- 异常处理
- FileReader 读取文件异常处理
- JDK新特性_try-with-resource(自动关闭Closeable接口的资源)
- 包装类基本用法
- StringBuilder和StringBuffer用法
- 字符序列陷阱_时间和空间效率测试
- 使用StringBuilder进行字符串的拼接既高效又节省空间
- Date类用法
- DateFormat时间格式化类
- Math类和Random类
- File类的使用
- File类_递归_打印目录树结构
- 枚举_switch语句复习
- 容器
- 泛型类
- 泛型接口
- 泛型方法_非静态方法
- 泛型方法_静态方法
- 泛型方法与可变参数
- 无界通配符
- 统配符的上限限定
- 统配符的上限限定
- 泛型总结
- Java中的容器结构
package project02; public class StringTest1 { public static void main(String[] args) { String s1 = "core Java"; String s2 = "Core Java"; System.out.println(s1.charAt(3)); //提取下标为3的字符 System.out.println(s2.length()); //字符串的长度 System.out.println(s1.equals(s2)); //比较两个字符串是否相等 System.out.println(s1.equalsIgnoreCase(s2)); //比较两个字符串(忽略大小写) System.out.println(s1.indexOf("Java")); //字符串s1中是否包含Java 返回首次出现的位置 System.out.println(s1.indexOf("apple")); //字符串s1中是否包含apple String s = s1.replace(' ','&'); //将s1中的空格替换成& System.out.println("result is "+s); } }
package project02; public class StringTest2 { public static void main(String[] args) { String s = ""; String s1 = "How are you?"; System.out.println(s1.startsWith("How")); //是否以How开头 System.out.println(s1.endsWith("you")); //是否以you结尾 s = s1.substring(4); //提取字符串:从下标为4开始到字符串结尾为止 System.out.println(s); s = s1.substring(4,7); //提取字符串 [4,7) 不包括7 System.out.println(s); s = s1.toLowerCase(); //全部转小写 System.out.println(s); s = s1.toUpperCase(); //全部转大写 System.out.println(s); String s2 = " How old are you! "; s = s2.trim(); //去除字符串首尾的空格。 中间空格不能去除 System.out.println(s); } }异常处理 FileReader 读取文件异常处理
package project03; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class test01 { public static void main(String[] args) { FileReader reader = null; try { reader = new FileReader("C:/Users/kangyi/Desktop/a.txt"); char[] cbuf =new char[1000]; int len = reader.read(cbuf); System.out.println(new String(cbuf,0,len)); // reader = new FileReader("C:/Users/kangyi/Desktop/a.txt"); // char c = (char)reader.read(); // char c1 = (char)reader.read(); // char c2 = (char)reader.read(); // System.out.println("文本内容为:"+c+c1+c2); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { try { if(reader != null) { reader.close(); } } catch (IOException e) { e.printStackTrace(); } } } }JDK新特性_try-with-resource(自动关闭Closeable接口的资源)
package project03; import java.io.FileReader; import java.io.IOException; public class test03 { public static void main(String[] args) { try(FileReader reader = new FileReader("C:/Users/kangyi/Desktop/a.txt")){ char[] cbuf = new char[1000]; int len = reader.read(cbuf); System.out.println(new String(cbuf,0,len)); }catch (IOException e){ e.printStackTrace(); } } }包装类基本用法
package project03; public class test04 { public static void main(String[] args) { Integer i = new Integer(50); //从Java9开始被废弃 Integer j = Integer.valueOf(10); //官方推荐 int a = j.intValue(); //把包装类对象转成基本数据类型 double b = j.doublevalue(); //把字符串转成数字 Integer m = Integer.valueOf("456"); } }StringBuilder和StringBuffer用法
package project03; public class test05 { public static void main(String[] args) { StringBuilder sb = new StringBuilder("abc"); // StringBuffer sb2 = new StringBuffer("abc"); // StringBuilder StringBuilder sb1 = new StringBuilder(); for (int i =0;i<7;i++){ sb.append((char)('a' + i )); //追加单个字符 } System.out.println(sb.toString()); //转换成String输出 sb.append(",I can sing my abc!"); // 追加字符串 System.out.println(sb.toString()); //StringBuffer,下面的方法同样适用于StringBuilder StringBuffer sb3 = new StringBuffer("北京尚学堂"); sb3.insert(0,"爱").insert(0,"我"); //插入字符串 System.out.println(sb3); sb3.delete(0,2); //删除字符串 System.out.println(sb3); sb3.deleteCharAt(0).deleteCharAt(0); //删除某个字符 System.out.println(sb3.charAt(0)); //获取某个字符 System.out.println(sb3.reverse()); //字符串逆序 } }字符序列陷阱_时间和空间效率测试 使用StringBuilder进行字符串的拼接既高效又节省空间
package project03; import java.sql.SQLOutput; public class test06 { public static void main(String[] args) { //使用String进行字符串的拼接 String str = "abc"; long num1 = Runtime.getRuntime().freeMemory(); // 获取系统剩余内存空间 long time1 = System.currentTimeMillis(); //获取系统的当前时间 for(int i = 0;i<5000;i++){ str = str +i; //相当于产生了5000个对象 } long num2 = Runtime.getRuntime().freeMemory(); long time2 = System.currentTimeMillis(); System.out.println(str.toString()); System.out.println("String占用内存:"+(num1-num2)); System.out.println("String占用时间:"+(time2-time1)); // 使用StringBuilder进行字符串的拼接 StringBuilder sb1 = new StringBuilder("abc"); long num3 = Runtime.getRuntime().freeMemory(); long time3 = System.currentTimeMillis(); for (int i = 0;i<5000;i++){ sb1.append(i); } long num4 = Runtime.getRuntime().freeMemory(); long time4 = System.currentTimeMillis(); System.out.println(str.toString()); System.out.println("String占用内存:"+(num3-num4)); System.out.println("String占用内存:"+(time4-time3)); } }
结果:
package project03; import java.util.Date; public class test07 { public static void main(String[] args) { long time = System.currentTimeMillis();//获取当前计算机时间 System.out.println(time); Date date1 = new Date();//new一个date,获取当前时间 System.out.println(date1); System.out.println(date1.getTime()); Date date2 = new Date(-21L*365*24*3600*1000);//计算机基点时间为1970,(-21L*365*24*3600*1000)倒回1949年 System.out.println(date2); System.out.println(date2.equals(date1));//比较时间是否相等 System.out.println(date2.before(date1));//比较两时间前后顺序 System.out.println(date2.after(date1));// } }DateFormat时间格式化类
package project03; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; //测试DateFormat时间格式化类 public class DateFormat { public static void main(String[] args) throws ParseException { //字符串转时间 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//new一个时间格式 String str = "2049-10-1 10:00:00"; Date guoqing100 = format.parse(str); System.out.println(guoqing100.getTime()); //2516666400000 System.out.println(guoqing100); //Fri Oct 01 10:00:00 CST 2049 //时间转字符串 SimpleDateFormat format2 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒"); Date date2 = new Date(2344551651651L); String date2Str = format2.format(date2); System.out.println(date2Str); //2044年04月18日 08时20分51秒 //小妙招 Date now = new Date(); SimpleDateFormat f1 = new SimpleDateFormat("现在是今年的第D天,第w周。"); String str3 = f1.format(now); System.out.println(str3); //现在是今年的第349天,第51周。 } }Math类和Random类
package project03; //Math类 public class TestMath { public static void main(String[] args) { //取整相关 *** 作 System.out.println(Math.ceil(3.2)); //向上取整 System.out.println(Math.floor(3.2)); //向下取整 System.out.println(Math.round(3.2)); //四舍五入 System.out.println(Math.round(3.8)); //绝对值,开方,a的b次幂等 *** 作 System.out.println(Math.abs(-45)); //绝对值 System.out.println(Math.sqrt(64)); //开方 System.out.println(Math.pow(5,2)); //5的2次幂 System.out.println(Math.pow(2,5)); //2的5次幂 //Math类中常用的常量 System.out.println(Math.PI); //3.141592653589793 System.out.println(Math.E); //2.718281828459045 //随机数 System.out.println(Math.random()); //[0,1) } }
package project03; import java.util.Random; //Random类 public class TestRandom { public static void main(String[] args) { Random rand = new Random(); //随机生成[0,1)之间的double类型的数据 System.out.println(rand.nextDouble()); //随机生成int类型允许范围内的整型数据 System.out.println(rand.nextInt()); //随机生成[0,1)之间的float类型的数据 System.out.println(rand.nextFloat()); //随机生成false或者true System.out.println(rand.nextBoolean()); //随机生成[0,10)之间的int类型的数据 System.out.println(rand.nextInt(10)); //随机生成[20,30)之间的int类型的数据 System.out.println(20+rand.nextInt(10)); //随机生成[20,30)之间的int类型的数据(此种方法计算较为复杂) System.out.println(20+(int)(rand.nextDouble()*10)); } }File类的使用
package project03; import java.io.File; import java.io.IOException; import java.util.Date; // File类的用法 public class TestFile { public static void main(String[] args) throws IOException { System.out.println(System.getProperty("user.dir")); //获取当前文件位置 File f = new File("a.txt"); //相对路径:默认放到user.dir目录下面 f.createNewFile(); //创建文件 File f2 = new File("C:/Users/kangyi/b.txt"); //绝对路径 f2.createNewFile(); f2.delete(); //删除文件 System.out.println("File是否存在:"+f.exists()); System.out.println("File是否是目录:"+f.isDirectory()); System.out.println("File是否是文件:"+f.isFile()); System.out.println("File最后修改的时间:"+new Date(f.lastModified())); System.out.println("File的大小:"+f.length()); File f3 = new File("C:/Users/kangyi/电影/华语/大陆"); boolean flag = f3.mkdir(); // 目录结构中有一个不存在,则不会创建整个目录树 System.out.println(flag); //创建失败 boolean flags = f3.mkdirs(); //目录结构中有一个不存在也没关系:创建整个目录树 System.out.println(flags); //创建成功 } }File类_递归_打印目录树结构
package project03; import java.io.File; //打印目录树,结合递归 public class PrintFileTree { public static void main(String[] args) { File f = new File(System.getProperty("user.dir")); printFile(f,0); } static void printFile(File file,int level){ for (int i=0;i枚举_switch语句复习 package project03; import java.util.Random; //测试枚举_switch语句复习 public class TestEnum { public static void main(String[] args) { System.out.println(jijie.spring); System.out.println(Season.spring); for(Season s:Season.values()){ System.out.println(s); } int a = new Random().nextInt(4); //生成0,1,2,3随机数 switch (Season.values()[a]){ case spring: System.out.println("春天"); break; case summer: System.out.println("夏天"); break; case autumn: System.out.println("秋天"); break; case winter: System.out.println("冬天"); break; } } //枚举 enum Season{ spring,summer,autumn,winter } //普通方法定义一个类 class jijie{ public static final int spring = 0; public static final int summer = 1; public static final int autumn = 2; public static final int winter = 3; } }容器 泛型类package project04; //泛型类 public class Generic{ private T flag; public T getFlag() { return this.flag; } public void setFlag(T flag) { this.flag = flag; } } package project04; // 测试类 public class TestGeneric { public static void main(String[] args) { Generic泛型接口generic = new Generic<>(); generic.setFlag("admin"); String flag = generic.getFlag(); System.out.println(flag); Generic generic1 = new Generic<>(); generic1.setFlag(100); Integer flag1 = generic1.getFlag(); System.out.println(flag1); } } package project04; //定义一个泛型接口 public interface Igeneric{ T getName(T name); } package project04; //定义一个接口实现类 public class IgenericImpl implements Igeneric{ @Override public String getName(String name) { return name; } } package project04; //测试类 public class TestIgeneric { public static void main(String[] args) { IgenericImpl igeneric = new IgenericImpl(); String name = igeneric.getName("kangyi"); System.out.println(name); Igeneric泛型方法_非静态方法igeneric1 = new IgenericImpl(); String name1 = igeneric1.getName("kangkang"); System.out.println(name1); } } 非静态方法使用泛型有两种情况:
1.通过泛型类的泛型来使用
2.通过泛型方法的方式来使用泛型package project04; //泛型方法 public class MethodGeneric { //定义一个无返回值的泛型方法 publicvoid setName(T name){ System.out.println(name); } //定义一个有返回值的泛型方法 public T getName(T name){ return name; } } package project04; //泛型方法测试类 public class TestMethodGeneric { public static void main(String[] args) { MethodGeneric methodGeneric = new MethodGeneric(); methodGeneric.setName("kangyi"); methodGeneric.setName(123456); MethodGeneric methodGeneric1 = new MethodGeneric(); String name = methodGeneric1.getName("kangkang"); Integer name1 = methodGeneric1.getName(123); System.out.println(name); System.out.println(name1); } }泛型方法_静态方法静态方法使用泛型的方式只有一个:即只能在静态方法上定义泛型
package project04; //泛型方法 public class MethodGeneric { //非静态方法 //定义一个无返回值的泛型方法 publicvoid setName(T name){ System.out.println(name); } //定义一个有返回值的泛型方法 public T getName(T name){ return name; } //静态方法 public static void setFlag(T flag){ System.out.println(flag); } public static T getFlag(T flag){ return flag; } } package project04; public class TestStaticMethodGeneric { public static void main(String[] args) { MethodGeneric.setFlag("kangyi"); MethodGeneric.setFlag(123456); String flag = MethodGeneric.getFlag("kangkang"); System.out.println(flag); Integer flag1 = MethodGeneric.getFlag(123456); System.out.println(flag1); } }泛型方法与可变参数package project04; //泛型方法 public class MethodGeneric { //非静态方法 //定义一个无返回值的泛型方法 publicvoid setName(T name){ System.out.println(name); } //定义一个有返回值的泛型方法 public T getName(T name){ return name; } //静态方法 public static void setFlag(T flag){ System.out.println(flag); } public static T getFlag(T flag){ return flag; } //使用泛型定义一个可变参数的方法 public void method (T...args){ for (T t :args){ System.out.println(t); } } } package project04; //测试泛型方法与可变参数 public class TestMethodGeneric01 { public static void main(String[] args) { MethodGeneric methodGeneric = new MethodGeneric(); String[] arr = new String[]{"a","b","c"}; Integer[] arr1 = new Integer[]{1,2,3}; methodGeneric.method(arr); methodGeneric.method(arr1); } }无界通配符package project04; //? 无界通配符(通配任何类型) //使用通配符能对泛型是任何类型的Generic的对象中的值做输出 public class ShowMsg { public void showFlag(Generic> generic){ System.out.println(generic.getFlag()); } }package project04; //测试通配符 public class TestShowMsg { public static void main(String[] args) { ShowMsg showMsg = new ShowMsg(); Generic统配符的上限限定generic = new Generic<>(); generic.setFlag(20); showMsg.showFlag(generic); Generic generic1 = new Generic<>(); generic1.setFlag(50); showMsg.showFlag(generic1); Generic generic2 = new Generic<>(); generic2.setFlag("kangyi"); showMsg.showFlag(generic2); } } 统配符的上限限定 泛型总结 Java中的容器结构
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)