zoukankan      html  css  js  c++  java
  • Java基础--第十四天

    讲课流程:【API应用】--编译器提醒

             1,Arrays类【冒泡排序、选择排序】

                       冒泡排序:

                                原理:相邻元素两两比较,大的往后走;一次完成,大的沉底。

                                代码实现--字符串字母排序

                                实现步骤:

                                         A:两个相邻位置数据进行比较,大的沉底;if(arr[i]>arr[i+1])  交换位置

                                         B:数组元素进行第一次全比较:for(int i=0;i<arr.length-1;i++)

                                         C:全部数据进行比较:for(int i=0;i<arr.length-1;i++)套在最外层---需要优化第二步

                                         D:for(intj=0;j<arr.length-1-i;j++)

                                                   -1:防止越界;-i:每一轮比较后,元素变少

                                         E:组合代码

                       二分查找:

                                乱序查找,可以直接一一对比;

                                二分查找前提:查找数据数组有序

                                步骤:

                                         A:把查找的值与中间位置元素比较,相同,则返回;不相同,则比较大小;

                                         B:若是小,则比较前半部;若大,则判断后半部。

     1 package cn.itcast_01;
     2 /**
     3  * 冒泡排序
     4  * @author itcast
     5  *
     6  */
     7 public class BubbleSort {
     8     public static void main(String[] args) {
     9         int[] arr = {8,9,2,3,1,4,5,6,7,0};
    10         //排序前打印
    11         printArr(arr);
    12         //冒泡排序
    13         bubbleSort(arr);
    14         //排序后打印
    15         printArr(arr);
    16     }
    17     /**
    18      * 冒泡排序
    19      * @param arr 排序的对应数组
    20      */
    21     public static void bubbleSort(int[] arr){
    22         /*    1,进行相邻两个位置数据比较,大的往后沉;
    23          *     2,进行一轮比较,将最大值沉到最后
    24          *     3,继续下一轮比较,此轮最后的值不用再参与比较,如此循环,直至排序完成
    25          * */
    26         for (int i = 0; i < arr.length-1; i++) {
    27             for (int j = 0; j < arr.length-1-i; j++) {
    28                 //-1:防止越界;-i:每一轮比较完成后,减少一次比较
    29                 if(arr[j]>arr[j+1])
    30                     changeLocation(arr,j,j+1);
    31             }
    32         }
    33     }
    34     /**
    35      * 打印数组
    36      * @param arr    传入要打印的数组
    37      */
    38     public static void printArr(int[] arr){
    39         for (int i = 0; i < arr.length; i++) {
    40             System.out.print(arr[i]+"	");
    41         }
    42         System.out.println();
    43     }
    44     /**
    45      * 交换两个元素的位置
    46      * @param arr    数组
    47      * @param i        交换数值的第一个索引值
    48      * @param j        交换数值的第二个索引值
    49      */
    50     private static void changeLocation(int[] arr,int i,int j){
    51         int temp = arr[i];
    52         arr[i] = arr[j];
    53         arr[j] = temp;
    54     }
    55 }

                       Arrarys类:

                                构造方法

                                toString():将任意数组类转换成String类型

                                binarySearch():二分查找

     1 package cn.itcast_01;
     2 
     3 public class HalfSearch {
     4     public static void main(String[] args) {
     5 
     6     }
     7 
     8     public static int halfSearch(int[] arr, int search) {
     9         //二分查找应该先排好序
    10         //数组打印并排序
    11         BubbleSort.printArr(arr);
    12         BubbleSort.bubbleSort(arr);
    13         BubbleSort.printArr(arr);
    14         //查找核心代码
    15         int start = 0;
    16         int end = arr.length - 1;
    17         int mid = (start + end) / 2;
    18         while (start<=end) {
    19             if (arr[mid] > search) {
    20                 end = mid - 1;
    21             } else if (arr[mid] < search) {
    22                 start = mid + 1;
    23             } else if (arr[mid] == search) {
    24                 return mid;
    25             }
    26             mid = (start + end) / 2;
    27         }
    28         return mid;
    29     }
    30 }

             2,System类

                       构造方法

                       成员方法

                                exit():终止当前运行的虚拟机

                                currentTimeMillis():返回以毫秒为单位的当前时间

                                arraryCopy():复制数组

                                static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)                         

                                         复制的长度,比目标数组替换位置后的长度长,怎么办?

                                                   复制的长度不能超过目标数组后面剩的长度

             3,StringBuffer类【字符串缓冲区类】

                       与String的区别:

                                String数组存在常量池里面;一旦赋值,值不能发生改变

                                StringBuffer则可以改变,采用的是缓冲区机制【随数据增多,可以继续开辟内存空间【同一个对象】】

                       构造方法

                                StringBuffer()

                                StringBuffer(int capacity)//capacity是一个默认长度,给定值比默认值小时,也是默认值

                                StringBuffer(String str)

                                         String和StringBuffer的转换:可以通过构造方法实现

                       方法

                                length()      //实际长度

                                capacity()    //理论长度

                                添加功能

                                         append()     //追加元素,数据额类型可混合,可链式编程

                                         insert()       //在指定位置添加元素

                                删除功能

                                         deleteCharAt() 删除指定位置字符

                                         delete() 删除指定位置到指定位置的字符

                                                   包左不包右【约定成俗】

                                StringBuffer replace(int start, int end, String str)把开始到结束位置的字符用一个新的字符串给替换。

                                String substring(int start):从指定位置到末尾截取

                               String substring(int start, int end): 从指定位置到结束位置截取

                                StringBuffer reverse()将此字符序列用其反转形式取代

                       实例:String 字符串翻转打出,两个例子,进行区别

                                常量相加会直接累加,然后在常来池里去找有没有,有则就是常量池里的值。

                                变量相加会重新开辟空间。        

                                String是一种特殊的引用类型,他传的值是变量的值。

             4,Integer类:

                       范围最大最小值

                       方法:二进制,八进制,十六进制【进制转换】

                       构造方法:

                                byte             Byte

                                short                 Short

                                int                 Integer

                                long             Long

                                float             Float

                                double               Double

                                char             Character

                                boolean             Boolean

                                Interger(int value);

                                Integer(String s);  NumberFormatException:数据格式化异常,此处字符串必须是数字字符组成的字符串

                                int---String:1,加空格符;2,String.valueOf();3,Integer做桥梁integer.toString();

                                String--int:1,"100",integer做桥梁;2,int num = Integer.parseInt(String str);

                       JDK1.5新特性

                                自动装箱:直接把基本类型赋值给引用类型

                                自动拆箱:直接把引用类型赋值给基本类型

                                Integer ii = 100;

                                ii = ii+200;  ii = new Integer(ii.intValue()+200);

                                开发原则:只要是对象,就先做不为null判断。

                       byte常量池

                                byte常量池。

                                在byte范围内的值,直接赋值给Integer,是从byte常量池里获取。

     1 package cn.itcast_05;
     2 
     3 import java.util.Arrays;
     4 
     5 /**
     6  * 
     7  * 一个字符串“23 98 71 54 60”(数字之间通过空格分隔,并且是没有大小顺序的),设计一个功能,把这个字符串排序后变成如下字符串:"23 54 60 71 98"
     8 1、先把字符串转成字符数组。(是不是已经拿到了里边所有的数值(字符串类型的))
     9 2、把字符数组转成int类型的数组。
    10 3、对int数组进行排序。
    11 4、把int类型的数组转变成字符串。
    12  *
    13  */
    14 public class IntegerDemo {
    15     public static void main(String[] args) {
    16         String s = "23 98 71 54 60";
    17         //先把字符串转成字符数组。(是不是已经拿到了里边所有的数值(字符串类型的)
    18         String[] strArr = s.split(" ");
    19         //把字符数组转成int类型的数组
    20         int[] arr = new int[strArr.length];
    21         for (int i = 0; i < arr.length; i++) {
    22             arr[i] = Integer.parseInt(strArr[i]);
    23         }
    24         //对int数组进行排序
    25         Arrays.sort(arr);
    26         //把int类型的数组转变成字符串
    27         StringBuffer sb = new StringBuffer();
    28         for (int i = 0; i < arr.length; i++) {
    29             sb.append(arr[i]).append(" ");
    30         }
    31         //提出最后一个空格
    32         String s1 = sb.toString().trim();
    33         System.out.println(s1);
    34 
    35     }
    36 }

             常用API方法

    1:Object(重点)

             toString():为了让对象的显示有意义,一般重写该方法。

             equals():默认比较的是地址值,一般重写该方法,按照自己的需求。

    2:Math

             floor():小于等于参数的最大整数。

             ceil():大于等于参数的最小整数。

             round():四舍五入。+0.5

             random():随机数。[0.0,1.0)

             pow():x的y次方

             sqrt():平方根  素数问题。

    3:Random

             nextInt(int n):随机产生[0,n)

    4:Scanner

             nextInt():获取int类型

             nextLine():获取String类型

    5:String(重点)

    6:StringBuffer(重点)

             append():添加

             insert():在指定位置添加

             reverse():反转

    7:System

             exit():退出

    8:Arrays

             sort():排序

             binarySearch():二分查找

    9:Integer(重点)

             parseInt(String s):把String -- int

  • 相关阅读:
    【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第三节)
    【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第二节)
    【手把手】JavaWeb 入门级项目实战
    用大白话聊聊JavaSE -- 自定义注解入门
    用大白话聊聊JavaSE -- 如何理解Java Bean(一)
    从硬件工程师转到纯软件开发,回顾那些岁月
    TessorFlow学习 之 序言
    《图像处理实例》 之 二值图像分割
    《图像处理实例》 之 Voronoi 图
    《图像处理实例》 之 疏密程度统计
  • 原文地址:https://www.cnblogs.com/zhidianhcuan/p/4375092.html
Copyright © 2011-2022 走看看