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]+"\t");
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

时间: 2024-12-19 03:34:42

Java基础--第十四天的相关文章

java基础 第十四章(Servlet声明周期、Servlet向jsp中提供数据、Servlet跳转jsp、jsp中书写java代码)

一.Servlet声明周期 1.Servlet的声明周期一般分为四步:加载.实例化.服务.销毁. 2.实例化在整个生命周期中只执行一次. 二.jsp 1.Servlet向jsp中提供数据 request.setAttribute( , ); 例:request.setAttribute("key" , "Hello"); 2.Servlet跳转jsp (1)同一请求方式:request.getRequestDispatcher("/路径").fo

java基础(十四章)

1.Java中的包(package) 2.1 包,对应到磁盘中的文件夹 2.2 新建一个class,默认保存在缺省包中 2.3 声明包的关键字:package package语句,置顶位置 2.4 导入包的关键字:import import 包名.类名(*表示所有); 2.5 作用: 分类存放,解决同名冲突.方便查找和管理 2.6 命名规范 l  Java包名通常由小写字母组成,不能以圆点开头或结尾. l  一个唯一包名的前缀通常是全部小写的ASCII字母,并且是一个顶级域名com.edu.go

大数据JAVA基础第十四天

1.Java异常 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,输入值的范围,读取文件是否存在,网络是否始终保持通畅等等. 对于程序设计人员需要尽可能的预知所有可能发生的情况,尽可能的保证程序能在所有最糟糕的情况下都能运行. 但实际上,意外情况是不胜枚举的,程序可能发生的异常情况远远多于程序员所能考虑到的意外情况. Java的异常处理机制可以让程序具有良好的容错性,让程序更加健

Java基础第十四天总结

package com.client0601; import java.nio.charset.Charset; public class App { public static void main(String[] args) { for(String key:Charset.availableCharsets().keySet()){ System.out.println(key); } System.out.println(Charset.defaultCharset()); } } 缓冲

java基础(十四)集合(一)

这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是比较清晰的!如果你有需要可以在评论中留下您的邮箱我看到一定会免费发给你的!感谢这个平台让我们大家共同进步吧!! 记住 程序员是无私的!!! 也非常欢迎到我的博客内观看 博客地址:http://www.cnblogs.com/duscl/ /* 1:对象数组(掌握) (1)数组既可以存储基本数据类型,

Java基础第二十四天总结——集合

目录: 一.Map接口 二.Collection工具类 /*---------------分割线---------------------*/ 一.Map接口 Map中的key用Set来存放,不可重复.作为一个Map对象所对应的类,需重写hashCode和equals方法. HashMap是Map接口使用频率最高的实现类. 添加.删除.修改操作: Object put(Object key,Object value):将指定key-value添加到(或修改)当前map对象中 void putAl

Java基础--第二十四天

day24:多线程   [等待唤醒机制] 等待唤醒机制[Object] wait():让线程处于等待状态 notify():唤醒等待线程 实现或者重写父类方法,出现父类中没有的异常时,子类只能try catch. wait():是Object类的方法,可以不用传参:释放锁对象 sleep():是Thread类的静态方法,需要传递参数:不释放锁对象 线程优先级 getProirity():获取优先级,默认设置为5,范围是[1,10] setProirity():设置优先级 注意:优先级在一定程度上

“全栈2019”Java第五十四章:多态详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第五十四章:多态详解 下一章 "全栈2019"Java第五十五章:方法的静态绑定与动态绑定 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组"

“全栈2019”Java第六十四章:接口与静态方法详解

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第六十四章:接口与静态方法详解 下一章 "全栈2019"Java第六十五章:接口与默认方法详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组&qu