黑马程序员技术交流社区
标题:
排序,转换总结
[打印本页]
作者:
A180605191
时间:
2018-8-14 14:40
标题:
排序,转换总结
[size=1.25]01_数组排序之冒泡排序原理图解
[size=1.25] 其实就是相邻两两之间依次进行比较,小的上浮,大的下沉!!
[size=1.25]
[size=1.25] 规律:
[size=1.25] 1,相邻两两之间进行比较
[size=1.25] 2,每循环一次从尾部确定一个数(最大/小值就出现在了最大索引处)
[size=1.25] 3,n个数只需要比较n-1轮
[size=1.25]02_数组排序之冒泡排序代码实现
[size=1.25] int[] arr = {24,69,80,57,13};
[size=1.25] public static void sort(int[] arr) {
[size=1.25] for(int x=0; x<arr.length-1; x++) { //外层循环
[size=1.25] for(int y=0; y<arr.length-1-x; y++) {//内层循环
[size=1.25] if(arr[y] > arr[y+1]) {
[size=1.25] int temp = arr[y];
[size=1.25] arr[y] = arr[y+1];
[size=1.25] arr[y+1] = temp;
[size=1.25] }
[size=1.25] }
[size=1.25] }
[size=1.25] }
[size=1.25]03_Arrays类的概述和使用
[size=1.25] Arrays:提供了对数组操作的各种方法。
[size=1.25] public static String toString(int[] a):把数组转成字符串
[size=1.25] public static void sort(int[] a):对数组进行升序排序
[size=1.25]
[size=1.25] /* 需求:定义一个int类型的数组, int[] arr = {24,69,80,57,13}; 对其进行排序打印,使用Arrays类中的方法
[size=1.25] 分析:
[size=1.25] 第一步:定义一个数组int[] arr = {24,69,80,57,13};
[size=1.25] 第二步:使用Arrays类中的sort()方法进行排序
[size=1.25] 第三步:调用Arrays类中的toString()方法,将数组拼接成字符串
[size=1.25] 第四步:打印 */
[size=1.25]
[size=1.25]04_Arrays类中构造方法的问题
[size=1.25] 常用的工具类的设计思想:
[size=1.25] 构造方法私有。
[size=1.25] 成员都用static修饰。
[size=1.25]
[size=1.25] 如果一个类中所有的方法都是静态,需要再多做一步,私有构造方法
[size=1.25] 目的是不让其他类来创建本类对象,直接用类名调用就可以
[size=1.25] /* 制作一个工具类
[size=1.25] * ArrayTool
[size=1.25] * 1,获取最大值
[size=1.25] * 2,数组最小值
[size=1.25] * 3,数组的反转 */
[size=1.25]
[size=1.25]05_基本类型包装类的概述
[size=1.25] 为了对基本数据类型进行更多更方便的操作,Java就针对每一种基本数据类型提供了一个对应的引用类型。
[size=1.25] 基本类型包装类:
[size=1.25] Byte byte
[size=1.25] Short short
[size=1.25] Integer int ***
[size=1.25] Long long
[size=1.25] Float float
[size=1.25] Double double
[size=1.25] Character char ***
[size=1.25] Boolean boolean
[size=1.25] 基本数据类型包装类最常见的用法就是用于和字符串之间进行相互转换。
[size=1.25]06_Integer类的概述和构造方法
[size=1.25] Integer:把基本类型int包装成引用类型。然后原来这个int类型的数就有了成员变量和成员方法
[size=1.25] 我们就可以像操作对象那样,操作一个基本的数,非常方便
[size=1.25]
[size=1.25] 构造方法:
[size=1.25] Integer(int value)
[size=1.25] Integer(String s) //注意:这个字符串必须由数字字符组成
[size=1.25]
[size=1.25] Integer 100转成二进制
[size=1.25]
[size=1.25]07_int类型和String类型的相互转换
[size=1.25] int -- String
[size=1.25] 方法一: String s1 = 100 + "";------常用
[size=1.25] 方法二: String s2 = String.valueOf(100);
[size=1.25]
[size=1.25] String -- int
[size=1.25] 方法一: Integer i = new Integer("100"); int x = i.intValue();
[size=1.25] 方法二: int x = Integer.parseInt("100"); ------常用
[size=1.25]
[size=1.25] 思考:
[size=1.25] String和double相互转换
[size=1.25] String和char相互转换
[size=1.25]
[size=1.25] 练习
[size=1.25] 键盘录入一个int类型的数据,输出他是几位数?
[size=1.25] public static void main(String[] args) {
[size=1.25] int num = 1234567890;
[size=1.25]
[size=1.25] //第一种方法
[size=1.25] // int count = 1;
[size=1.25] // while (num / 10 != 0) {
[size=1.25] // num = num / 10;
[size=1.25] // count++;
[size=1.25] // }
[size=1.25] // System.out.println(count);
[size=1.25] //第二种方法
[size=1.25] String s = num +"";
[size=1.25] System.out.println(s.length());
[size=1.25] }
[size=1.25]08_Integer的练习之把字符串中的数据排序
[size=1.25]/* 我有如下一个字符串:”91 27 46 38 50”
[size=1.25] 请写代码实现最终输出结果是:”27 38 46 50 91”
[size=1.25] 提示:这里需要参考String类中的方法
[size=1.25] public String[] split(String regex)//把字符串切割成字符串数组
[size=1.25] String s = "91 27 46 38 50";
[size=1.25] String[] strArray = s.split(" "); */
[size=1.25]
[size=1.25]
[size=1.25]09_JDK5的新特性自动装箱和拆箱
[size=1.25] JDK5新特性:
[size=1.25] 自动装箱:把基本数据类型转换为对应的包装类类型
[size=1.25] public static Integer valueOf(int i)
[size=1.25] 自动拆箱:把包装类类型转换为对应的基本数据类型
[size=1.25] public int intValue()
[size=1.25]
[size=1.25] 举例
[size=1.25] Integer ii = 100; //自动装箱 从对象类型->基本数据类型 拆箱
[size=1.25] ii += 200; //ii = ii + 200 从基本数据类型->对象类型 装箱
[size=1.25]
[size=1.25] 注意:在使用包装类类型的新特性的时候,如果做操作,最好先判断是否为null
[size=1.25] null调用方法就会出现空指针异常(NullPointerException)
[size=1.25]
[size=1.25] 开发中的原则:
[size=1.25] 只要是对象,在使用前就必须进行不为null的判断。(视具体情况而定)
[size=1.25]
[size=1.25]10_Date类的概述和构造方法 Date
[size=1.25] Date():根据当前时间创建的日期对象
[size=1.25] Date(long date):根据给定的毫秒值创建对象,从1970 年 1 月 1 日 00:00:00
[size=1.25]
[size=1.25] /* 需求:根据Date类的构造,获取当前时间
[size=1.25] 分析:
[size=1.25] 第一步:创建Date对象
[size=1.25] 第二步:打印对象 */
[size=1.25]11_Date类的成员方法getTime()和setTime()
[size=1.25] public long getTime():获取的是毫秒值。从1970年1月1日 00:00:00开始的。
[size=1.25] public void setTime(long time):设置时间,给的是毫秒值。
[size=1.25]
[size=1.25] 从Date得到一个毫秒值:
[size=1.25] getTime()
[size=1.25] 从一个毫秒值得到一个Date对象
[size=1.25] 构造方法
[size=1.25] setTime(long time)
[size=1.25]
[size=1.25]12_SimpleDateFormat类的概述和使用
[size=1.25] 格式化(日期 -> 文本): Date -- String
[size=1.25] Date d = new Date(); //Thu Jul 19 16:49:29 CST 2018
[size=1.25] SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
[size=1.25] String s = sdf.format(d);
[size=1.25]
[size=1.25] 解析(文本 -> 日期): String -- Date
[size=1.25] String str = "2080-08-08 12:23:45";
[size=1.25] SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//这里的格式要跟给定的日期字符串格式一样
[size=1.25] Date d = sdf.parse(str);//ctrl+1抛出异常
[size=1.25]
[size=1.25] /* 需要:格式化当前日期(格式:xxxx年xx月xx日 时:分:秒)
[size=1.25] 分析:
[size=1.25] 第一步:获取当前日期
[size=1.25] 第二步:创建格式化日期对象
[size=1.25] 第三步:对当前日期进行格式化
[size=1.25] 第四步:打印 */
[size=1.25]
[size=1.25]13_Date的练习之日期工具类的定义和使用
[size=1.25] 设计一个工具类,包含2个方法
[size=1.25] 1,把日期转换为指定格式的字符串
[size=1.25] 2,把指定格式的字符串解析为日期
[size=1.25]
[size=1.25]
[size=1.25] 扩展:
[size=1.25] System.currentTimeMillis()产生一个当前的毫秒,这个毫秒其实就是自1970年1月1日0时起经历了多少毫秒
[size=1.25] //测试电脑性能的一个小程序
[size=1.25] public static void main(String[] args) {
[size=1.25] long start = System.currentTimeMillis();
[size=1.25] for (int i = 0; i < 100000; i++) {
[size=1.25] System.out.println(i);
[size=1.25] }
[size=1.25] long end = System.currentTimeMillis();
[size=1.25] System.out.println(end-start);
[size=1.25] }
[size=1.25]
[size=1.25] 补充案例:
[size=1.25] /**
[size=1.25] * * A:案例演示
[size=1.25] * 需求:算一下你来到这个世界多少天?
[size=1.25] * 分析:
[size=1.25] * 1,将生日字符串和今天字符串存在String类型的变量中
[size=1.25] * 2,定义日期格式化对象
[size=1.25] * 3,将日期字符串转换成日期对象
[size=1.25] * 4,通过日期对象获取时间毫秒值
[size=1.25] * 5,将两个时间毫秒值相减除以1000,再除以60,再除以60,再除以24得到天
[size=1.25] */
[size=1.25] public static void main(String[] args) throws ParseException {
[size=1.25]
[size=1.25] //定义变量存储两个日期
[size=1.25] String birthday = "1995年08月08日";
[size=1.25] String today = "2017年11月19日";
[size=1.25]
[size=1.25]
[size=1.25]//定义日期格式化对象
[size=1.25] SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
[size=1.25] //转换
[size=1.25] Date d1 = sdf.parse(birthday);
[size=1.25] Date d2 = sdf.parse(today);
[size=1.25]
[size=1.25] //计算(分别获取两个日期对象从1970年开始经历过的毫秒值的差值)
[size=1.25] long time = d2.getTime() - d1.getTime();
[size=1.25] System.out.println(time/1000/60/60/24);
[size=1.25] }
[size=1.25]
[size=1.25]
[size=1.25]
[size=1.25]
[size=1.25]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2