一、二维数组

1、动态创建

数组中元素类型[] 数组名 = new 数组中元素类型[];

例如:int[][] arr = new int[二维数组的长度][一维数组的长度];

Int[][] arr = new int[4][3]; 创建了一个长度为2的二维数组(也就是创建了一个包含4个一维数组的二维数组),其中一位数组的长度为3

2、静态创建

数组中元素类型[] 数组名 = new 数组中元素类型[]{{1,2,3},{4,5,6},{7,8,9}};

例如:int[][] arr = new int[][]{{1,2,3},{4,5,6},{7,8,9}};

3、二维数组默认值确定

意思是打印二维数组中索引为0的元素:此时索引为0的元素类型为一维数组的int[]类型,但是一维数组并不知道长度,因此,打印的值为null。

意思是打印二维数组中索引为0的一位数组中索引为1的元素:此时索引为0的一位数组中索引为1的元素没有手动赋值,因此,系统会给与默认值,默认值类型与数据类型有关。

总结:在动态创建二维数组中,当二维数组中的一维数组的长度给定之后,一维数组就具有了默认值。

二、冒泡排序(笔试重点)

class TestMaoPao9{
public static void main(String[] args){
int[] arr = {5,1,13,3,8,2,11}; sort(arr);
} /*
请把以上数组按照从小达到的顺序进行排序 */
//5,1,13,3,8,2,11
public static void sort(int[] arr){
/*
if(arr[0] > arr[1]){
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
} if(arr[1] > arr[2]){
int temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
} if(arr[2] > arr[3]){
int temp = arr[2];
arr[2] = arr[3];
arr[3] = temp;
} if(arr[3] > arr[4]){
int temp = arr[3];
arr[3] = arr[4];
arr[4] = temp;
} if(arr[4] > arr[5]){
int temp = arr[4];
arr[4] = arr[5];
arr[5] = temp;
} if(arr[5] > arr[6]){
int temp = arr[5];
arr[5] = arr[6];
arr[6] = temp;
}
以上代码第一次比较完毕,但是,重复代码太多了,所以我们可以使用循环进行优化。 */ /* //第一次比较完毕
for(int i=0;i<6;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
} //第二次比较完毕
for(int i=0;i<5;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
} //第三次比较
for(int i=0;i<4;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
} //第四次比较
for(int i=0;i<3;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
} //第五次比较
for(int i=0;i<2;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
} //第六次比较
for(int i=0;i<1;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
} 以上代码的重复代码又太多了,因此继续循环优化 for(int j=0;j<6;j++){
for(int i=0;i<6-j;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
} */ //冒泡排序最终代码
for(int j=0;j<arr.length-1;j++){
for(int i=0;i<arr.length-1-j;i++){
if(arr[i] > arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
} /*
调用方法的三种方式:
1.方法所在类名.方法名() 前提: 方法有被static所修饰
2.对象名.方法名() 前提: 方法没有被static所修饰
3.直接方法名() 前提: 调用方和被调用方都必须在同一个类中,要么都被static所修饰 */
Test3.printArray(arr1); } }
class Test3{
public static void main(String[] args){
int[] arr = {23,12,24,54,32};
printArray(arr);
}
//定义一个方法将int[] arr = {23,12,24,54,32}打印成[23,12,24,54,32]
public static void printArray(int[] arr){
String str = "[";
for(int i = 0;i < arr.length;i++){
str +=arr[i];
if(i != arr.length - 1){
str += ",";
}
}
str = str + "]";
System.out.println(str);
}
}

  

三、二分查找

1、查找分为线性查找和二分查找,线性查找代码示例如下:

/**
设计一个方法,传入一个int的数组,返回该数组中最大的值
*/
/**
思路:形参:数组
定义一个变量max ,每个数都和max进行比较,如果比max大,就将这个数赋值给max,依次进行
*/
class Test8{
public static void main(String[] args){
int[] arr = {34,23,56,45,24,55};
System.out.println(getFirst(arr));
}
public static int getFirst(int[] arr){
int max = arr[0];
for(int i = 0;i < arr.length;i++){
if(max < arr[i]){
max = arr[i];
}
}
return max;
}
}

 2、二分查找代码示例如下

class Test6{
public static void main(String[] args){
int[] arr={1,2,3,4,5,6,7,8,9};
int index = binarySerch(arr,3);
System.out.println(index);
}
/**
使用二分查找查找元素3在int[] arr={1,2,3,4,5,6,7,8,9}中的索引值
*/
/**
思路:将3与中间索引对应的值相比较,如果相同,则返回索引,如果3大于中间索引对应的值,则往右查找,否则往左查找。
定义minIndex、maxIndex、midIndex三个变量分别储存最小索引、最大索引和中间索引;
流程分析:第一次查找 minIndex = 0 maxIndex = 8 0 <= 8 midIndex = 4 3<5 往左查找
第二次查找 minIndex = 0 maxIndex = 3 0 <= 3 midIndex = 1 3>2 往右查找
第三次查找 minIndex = 2 maxIndex = 3 2 <= 3 midIndex = 2 3 = 3 over 返回索引2
注意:使用二分查找前,数组必须按照一定顺序排列
*/
public static int binarySerch(int[] arr,int num){
int minIndex = 0;
int maxIndex = arr.length-1; while(minIndex <=maxIndex){//此处不知道要循环多少次,因此使用while循环,此处判断条件是重点
int midIndex = (minIndex+maxIndex) / 2;
if(num == arr[midIndex]){
return midIndex;
}else if(num < arr[midIndex]){
maxIndex = midIndex - 1;
}else{
minIndex = midIndex + 1;
}
}
return -1;
}
}

 

四、增强for循环

1、语法格式

For(源数据类型 变量名 : 源){

  功能执行语句;

}

注意:源指的是数组或者Iterable的实例对象

2、示例

class Test7{
public static void main(String[] args){
int[] arr = {1,2,3,4,5};
foreachDemo(arr);
int[][] arr1 = {{1,2,3},{4,5,6},{7,8,9}};
foreachDemo1(arr1);
}
public static void foreachDemo(int[] arr){
for(int e : arr){ //增强for循环
System.out.println(e);
}
}
public static void foreachDemo1(int[][] arr1){
for(int[] e : arr1){ //嵌套式增强for循环
for(int x : e){
System.out.println(x);
}
}
} }

五、可变参数

1、语法格式 :

      数据类型...变量名

2、可变参数作用:调用方法的时候,你传递的实参可以是0个也可以是n个

3、可变参数:其实就是一个数组

4、可变参数的注意事项:

1.可变参数只能定义在参数列表末尾(java规范)

2.在一个方法中,有且只能申明一个可变参数

初窥Java之六的更多相关文章

  1. 初窥Java之三

    一.基本数据类型之浮点型 每个数据它自身都有一个默认的类型,如果直接打印小数,默认类型就为double类型: float和double表示小数的精度不是特别的高,如果对于精确度要求非常的高,我们 都使 ...

  2. 初窥Java之二

    一.java中存在三大注释: 第一大注释:  单行注释   一般用于信息量比较少的地方 第二大注释:  多行注释   一般用于信息比较多的地方 多行注释注意事项:1.多行注释的开始行与结尾行不能写注释 ...

  3. 初窥Java之一

    一.常用的dos命令 打开命令提示符窗口的方式: ① win + R --> 输入cmd --> 回车 ② 开始 --> 搜索程序和文件的框中输入  cmd  --> 回车 ③ ...

  4. 初窥Java之五

    一.方法 1.语法格式 修饰符  返回值类型 方法名(形参列表){ 方法体 } 2.返回值类型 返回值类型可以时:1.void(无返回值) 2.8大基本数据类型中的任意一种 3.引用数据类型中的任意一 ...

  5. 初窥Java之四

    一.条件判断之if判断 语法格式:if(结果为布尔类型的结果值){ 功能执行语句; }else if(结果为布尔类型的结果值){ 功能执行语句; } ....{ }else{ 功能执行语句: } 注意 ...

  6. Java发送邮件初窥

    一.背景 最近朋友的公司有用到这个功能,之前对这一块也不是很熟悉,就和他一起解决出现的异常的同时,也初窥一下使用Apache Common Email组件进行邮件发送. 二.Java发送邮件的注意事项 ...

  7. Hadoop学习笔记(9) ——源码初窥

    Hadoop学习笔记(9) ——源码初窥 之前我们把Hadoop算是入了门,下载的源码,写了HelloWorld,简要分析了其编程要点,然后也编了个较复杂的示例.接下来其实就有两条路可走了,一条是继续 ...

  8. 初窥ElasticSearch

    初窥ElasticSearch 官网上面的,不知道讲的是什么.. youtube上面有一个start with,内容是在windows以下跑这个elastic search,然后用一个fidler工具 ...

  9. 李洪强iOS开发之函数式 编程初窥

    函数式 编程初窥   最近在学习Erlang和Python.Erlang是完全的函数式编程语言,Python语言是面向对象的语言,但是它的语法引入了大量的函数式编程思想.越研究越觉得函数式的编程思路可 ...

随机推荐

  1. LOJ2340 [WC2018] 州区划分 【FMT】【欧拉回路】

    题目分析: 这题是WC的题??? 令 $g[S] = (\sum_{x \in S}w_x)^p$ $h[S] = g[S]$如果$S$不是欧拉回路 $d[S] = \frac{f[S]}{g[All ...

  2. Magento CURD

    创建数据库表 创建模型-CRUD模型Model是MVC架构的一条巨大路径.在Magento 2 CRUD中,模型具有许多不同的功能,例如管理数据,安装或升级模块.在本教程中,我只讨论数据管理CRUD. ...

  3. A.01.10—模块的输出—PWM高端输出

    PWM高端输出比低端输出用得多,如上次提到的卤素灯的控制均是采用高端输出的. PWM高端输出与PWM低端输出的差异就像固态高端输出与固态低端输出的差异类似,从线路失效后对用户的影响来看:高端输出为控制 ...

  4. 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  5. 金融量化分析【day113】:多因子选股

    一.什么是多因子选股 在股市中征战过的朋友们应该知道,股市之道无非三点.1择时,2选股,3 仓控.精通这三点中的任何一点,都足以在股市中所向披靡.但是精通二字何其艰难!!!矫情的话多不多说,咱们进入正 ...

  6. npm常用命令学习(npm install -D,semver版本规范, npm进行版本管理的最佳实践用法)

    什么是npm npm有两层含义.一层含义是Node的开放式模块登记和管理系统,网址为npmjs.org.另一层含义是Node默认的模块管理器,是一个命令行下的软件,用来安装和管理Node模块. npm ...

  7. 鼠标右键添加Sublime Text

    鼠标右键添加Sublime Text 参考 将sublime添加到鼠标右键 实践 1. win+R 输入regedit 2. 输入路径: 计算机\HKEY_CLASSES_ROOT\*\shell\ ...

  8. 使用 JS 嵌入的方式来加载 Flash 插件,在各浏览器中播放视频

    嵌入插件 使用 object 和 embed 标签 这种方法用到的是 Object 和 Embed 标签,可以看到 object 的很多参数和 embed 里面的很多属性是重复的.浏览器兼容性,有的浏 ...

  9. Python中应该使用%还是format来格式化字符串?

    转载自http://www.cnblogs.com/liwenzhou/p/8570701.html %的特点是,前面有几个%,后面的括号里就得有几个参数,如果只有一个%,括号可以省略 基本格式 'a ...

  10. rxjs

    流就是一个事件  或者执行的某些操作