黑马程序员-java基础-数组&进制转换

第一讲  数组初始化&操作

1、  数组定义

概念:数组是同一种类型数据的集合,其实数组就是一个容器。数组中的元素从0开始编号,这样方便了对这些元素进行操作(获取、修改改、排序等)。

数组的定义格式有:

Int[] arr = new int[10]; ——这里指定数组的长度,后续需要分别对每一个元素赋值;

Int[] arr = new int[]{2,1,5,9};——创建数组实体并初始化,不需要指定长度;

Int[] arr = {2,1,5,9};——定义数组并初始化;

2、  数组操作

1)  获取数组中的元素,通常需要遍历数组

Int[] arr = {2,1,5,9};

For(int x = 0;x<arr.length;x++)  //length是数组中表示数组元素个数的属性。

{

System.out.print(arr[x]);//遍历数组arr,打印数组中所有元素。

}

2)  获取最值

获取最大值思路:1、获取最值需要比较,每一次比较都会有一个较大的值,可以将该较大值存在一个临时变量中。2、让数组中的每一个元素和这个变量中的值进行比较,如果大于了变量中的值,就将该元素值赋给该变量。3、当所有的元素都比较完成,那么该变量中的值就是数组中的最大值。

步骤:1、定义变量,初始化为数组中任意一个元素;2、通过循环语句对数组进行遍历;3、在遍历过程中定义判断条件,如果遍历到的元素比变量中的值大,就将元素赋值给变量。

获取最小值思路:与获取最大值相似,只是在遍历数组进行比较时,变量中存储的是较小值。

获取最大最小值代码实现如下:

第二讲 数组排序

1、  选择排序法

内循环一次,最值出现在头角标位置上

思路:拿数组第一个元素与后面的元素遍历比较,将若大于(小于)第一个则两者值互换,第一个元素与其他元素比较完后,拿第二个元素与后面的元素进行遍历比较,依次类推,直到遍历完成,数组排序完成。

实现代码如下:

2、  冒泡排序法

内循环一次,最值出现在最后角标位置上。

思路:相邻两个元素进行比较,如果符合条件(大于或小于)进行值互换;

代码实现如下:

3、  希尔排序

希尔算法是最快的排序算法。

选择/冒泡排序法效率低的原因是:比较完成后需要在堆内存中进行元素对换。解决方案:将需要换位的元素脚标存放在内存中,最后一次互换就直接数组元素互换。

4、  Java中有自带的排序方法:Arrays.sort(arr);

第三讲  数组查找操作

1、  获取关键值在数组中第一次出现的位置

思路:遍历数组,并与该值进行比较,如果相等则返回角标位置。

代码实现如下:

2、  折半查找算法

折半查找可以减少遍历的次数,从而提高查找的效率,但要求该数组必须是有序的。

思路:用关键值与数据中间元素进行比较,然后根据比较结果判断关键值在前半部分还是后半部分,然后再折半查找那一部分,依次类推。

代码实现如下:

3、  练习

将一个元素插入到一个有序数组中,保证该数组仍是有序的。如果获取该元素应该插入数组的哪个位置。

思路:

折半算法在数组中查找该元素,返回最小下角标,该下角标就是元素插入数组的位置。

第四讲  进制转换

1、  十进制转成二进制

2、  十进制转成十六进制

3、  查表法将十进制转成十六进制

思路:先将十六进制的元素(0~F)临时存储在一个表中,每一次&15后的值作为索引区查找建立好的表,就可以找到对应的元素。。

代码实现如下:

4、  查表法将十进制转成二进制

知识点总结

1、  数组有多种定义和初始化方式

1)  若不知道数组具体值,但直到数据长度,可以定义数据并指定长度:int [] arr = new int[10],后续只能遍历将元素赋值给数组中的单独位置;

2)  若不知道数组长度,但直到数组中的值,可以用这种方式定义并初始化:int [] arr = new int[]{1,2,3}

2、  数组排序

都需要利用嵌套循环。

1)选择排序法,内循环一次,最值出现在头角标位置上;

2)冒泡排序法,内循环一次,最值出现在最后角标位置上;

3)希尔排序效率最高;

4)java中有自带的排序程序:Arrays.sort(arr);

3、  查找

查找某个关键字在数组中第一次出现的位置,折半算法效率较高。

4、  进制转换

通过取余来获取某个位上的值,可以通过查表法来进行转换,取值更方便。

时间: 2024-10-11 19:01:30

黑马程序员-java基础-数组&进制转换的相关文章

黑马程序员——Java基础-数组

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 概念 数组就是同一种类型那个数据的集合,是一个容器,是引用类型,存储在堆中. 好处:可以自动给数组中的元素从0开始编号,方便操作这些元素 格式: 1. int[] arr=new int[5]; 创建一个长度为5 的,变量名为arr,类型为整型的数组. 2. int[] arr=new []{5,6,8,3,4} int[] arr={5,6,8,3,4} 数组中常见问题: 1.数组角标越界

黑马程序员-java基础-数组的反射

数组是一个对象,具有相同维数和元素类型的数组具有相同的字节码(相同类型). 所有数组其父类都是object.Object o = new int[2] 或者 Object o = new int[2][2];不会报错 基本类型的一维数组可以被当作Object类型使用,不能当作Object[]类型使用: int[] arr = new int[2]; Object o1 = arr Object[] o2 = arr //会报错 Object[] o3 = new Object[2][2];可以,

黑马程序员--java基础学习笔记5

黑马程序员--java基础学习笔记6 一.笔记内容概述: 数组-第二种定义格式.数组-常见操作-遍历-最值-选择排序-冒泡排序-排序位置置换代码提取.数组-排序的性能问题.数组-常见功能-查找-折半查找.进制转换-查表法-整合. 二.常用内容介绍: 1.数组初始化的三种方式: int[] arr = new int[3]; int[] arr = new int[]{1,2,3}; int[] arr = {1,2,3}; 2.查表法: 如果数据中出现了对应关系,而且对应关系的一方是有序的数字编

黑马程序员——java基础——反射

 黑马程序员--java基础--反射 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 反射 其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员. 反射就是把Java类中的各种成分映射成相应的java类. 简单说:反射技术可以对一个类进行解剖. 反射的基石-->Class类 1.java中的类是用来描述一类事物的共性,该类事物有什么属性,没有什么属性

黑马程序员——java基础——集合(Collection)

 黑马程序员--java基础--集合(Collection) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 集合框架的构成及分类,如下图: 1.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 2.数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的.数组中可以存储基本数据类型,集合只能存储对象. 3.

黑马程序员——Java基础---IO(下)

黑马程序员——Java基础---IO(下) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供了File类.properties类.打印流.序列流等和输入输出相关的类,它们能够帮助我们更好的处理信息.下面将对它们进行简单的介绍. 一.正

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

黑马程序员——java基础——多线程

 黑马程序员--java基础--多线程 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元.线程在控制着进程的执行.一个进程中至少有一个线程. 一个进程至少有一个线程在运行,当一个进程中出现多个线程时,就称这个应用程序是多线程应用程序,每个线程在栈区中都有自己的执行空间,自己的方法区.自己的变量.

黑马程序员——java基础---IO(input output)流字符流

黑马程序员——java基础---IO(input output)流字符流 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- io(input output)流特点: 1,io流用来处理数据之间的传输 2,java对数据的操作是通过流的方式: 3,java用于操作流的对象都在io包中: 4,流按操作数据分为两种:字节流和字符流: 5,流按流向分为:输入流和输出流. 注意:流只能操作数据,而不能操作文件. 3.IO流的常用基类: 1)字节流的抽象