尚学堂 JAVA DAY11 概念总结
1.冒泡排序算法 《升序排列》
思路1:
数组长度为n,那么要对数组进行n-1次遍历;
step 1---从数组的第一个数开始,两两比较,如果第一个数 > 第二个数,将二者进行交换;
之后拿第二个数与第三个数进行比较,若 第二个数 > 第三个数,将二者进行交换;
依此类推,直到 第n-2个数 和 第n-1个数比较完。
此时,该数组中最大的数将排在数组的最后一个位置。
step 2---重复step1,直到遍历完整个数组。
public class NewArray {
public static void main(String[] args) {
//声明并定义一个无序的数组
int[] scores = new int[15];
for(int i = 0; i < scores.length; i++) {
scores[i] = (int)(Math.random() * 101);
} //排序前 打印数组
System.out.println("\n==============排序前====================");
for(int score : scores) {
System.out.print(score + " ");
} //排序进行时 升序排列
int temp = 0;
int counter = 0;
for(int j = 0; j < scores.length - 1; j++) {
for(int i = 0; i < scores.length - 1; i++) {
if(scores[i] > scores[i+1]) {
temp = scores[i];
scores[i] = scores[i+1];
scores[i+1] = temp;
}
}
counter++;
} //排序后 打印数组
System.out.println("\n==============排序后====================");
for(int score : scores) {
System.out.print(score + " ");
} System.out.println("\n======================================");
System.out.println("共进行了" + counter + "次比较");
}
}
思路2:
数组长度为n,那么要对数组进行n-1次遍历;
step 1---从数组的第一个数开始,两两比较,交换,直到数组元素的(索引 == 数组长度 - 1 - 第i次)遍历数组结束。
step 2---重复step1,直到数组遍历结束。
public class NewArray {
public static void main(String[] args) {
//声明并定义一个无序的数组
int[] scores = new int[15];
for(int i = 0; i < scores.length; i++) {
scores[i] = (int)(Math.random() * 101);
} //排序前 打印数组
System.out.println("\n==============排序前====================");
for(int score : scores) {
System.out.print(score + " ");
} //排序进行时 升序排列 int temp = 0;
int counter = 0;
for(int j = 0; j < scores.length - 1; j++) {
for(int i = 0; i < scores.length - 1 - j; i++) {
if(scores[i] > scores[i+1]) {
temp = scores[i];
scores[i] = scores[i+1];
scores[i+1] = temp;
}
}
counter++;
} //排序后 打印数组
System.out.println("\n==============排序后====================");
for(int score : scores) {
System.out.print(score + " ");
} System.out.println("\n======================================");
System.out.println("共进行了" + counter + "次比较");
}
}
思路3:
数组长度为n,那么要对数组进行n-1次遍历;
step 1---从数组的第一个数开始,两两比较,交换,直到数组元素的(索引 == 数组长度 - 1 - 第i次)遍历数组结束。
step 2---重复step1,直到数组中没有发生元素的交换为止。
public class NewArray {
public static void main(String[] args) {
//声明并定义一个无序的数组
int[] scores = new int[15];
for(int i = 0; i < scores.length; i++) {
scores[i] = (int)(Math.random() * 101);
} //排序前 打印数组
System.out.println("\n==============排序前====================");
for(int score : scores) {
System.out.print(score + " ");
} //排序进行时 升序排列
int temp = 0;
int counter = 0;
boolean hasChanged = false;
for(int j = 0; j < scores.length - 1; j++) {
//每一次遍历开始都认为数列无序,数据未发生过交换
hasChanged = false;
for(int i = 0; i < scores.length - 1 - j; i++) {
if(scores[i] > scores[i+1]) {
//只要发生了交换,标志位置为true,表示还需进行下一次比较
hasChanged = true;
temp = scores[i];
scores[i] = scores[i+1];
scores[i+1] = temp;
}
}
counter++;
if(!hasChanged){
break;
}
} //排序后 打印数组
System.out.println("\n==============排序后====================");
for(int score : scores) {
System.out.print(score + " ");
} System.out.println("\n======================================");
System.out.println("共进行了" + counter + "次比较");
}
} 2.方法的重载
一个类中可以存在 [方法名相同、功能相同、参数不同(形参类型、形参数量)的 多个方法]。 这叫方法的重载。
如:
Arrays.sort(int[] arr);
Arrays.sort(float[] arr);
Arrays.sort(byte[] arr);
Arrays.sort(double[] arr);
...
顺便学习了Arrays类的使用,以及API文档的查阅
import java.util.Arrays; public class TestArraysClass {
public static void main(String[] args) {
//声明并定义一个无序的数组
int[] scores = new int[15];
for(int i = 0; i < scores.length; i++) {
scores[i] = (int)(Math.random() * 101);
} //输出数组
System.out.println(Arrays.toString(scores)); //将数组排序
Arrays.sort(scores); //输出数组
System.out.println(Arrays.toString(scores)); //查询某个元素
System.out.println(Arrays.binarySearch(scores,4)); //复制一个数组
int[] newScores = Arrays.copyOf(scores,0); //打印新数组
System.out.println(Arrays.toString(newScores)); }
}
3.可变参数
1)格式:
方法头(类型 ... 参数变量名) {
方法实体
}
2)特点:(要背)
a.只能作为方法的形参;
b.JDK1.5之后提供;
c.可接受八种基本数据类型和数组类型数据;
d.可以接受0个、1个和多个实参;
e.可变参数只能是最后一个参数;
f.定义了可变参数的方法后,不可定义数组为形参的方法;
g.重载的方法包括可变参数 和 确定数量参数的方法时,会优先调用确定数量参数的方法,而
忽略可变参数的方法。
4.main方法如何接收实参?
格式:
java 类名 参数1 参数2 参数3...
5.二维数组
1) 声明格式:
类型[][] 数组名; 或
类型 数组名[][];
2) 分配空间:
new 类型[长度][长度]; ---将二维数组的第一维和第二维都分配空间,使这都有默认值。
或
new 类型[长度][];---仅给二维数组的第一维分配空间,其默认值为null;
3) 动态初始化
数组名[][] = ...;
4) 静态初始化
是将上述三步合而为一。
类型[][] 数组名 = new 类型[][]{{},{},{}...};
或
类型[][] 数组名 = {{},{},{}...};
public class TwoDArray{ public static void main(String[] args) { //int[][] scores = new int[][]{{80,90,78},{90,80},{0,70}};
int[][] scores = {{80,90,78},{90,80},{0,70}}; /*scores[0] = new int[4];
scores[1] = new int[3];
scores[2] = new int[2]; scores[0][0] = 80;
scores[0][1] = 79;
scores[0][2] = 78; scores[1][0] = 90;
scores[1][1] = 80; scores[2][1] = 70; */ for(int i = 0; i < scores.length; i++) {
for(int j = 0; j < scores[i].length; j++) {
System.out.print(scores[i][j] + " ");
}
System.out.println();
} } }
尚学堂 JAVA DAY11 概念总结的更多相关文章
- 尚学堂 JAVA Day3 概念总结
java中的运算符 1.算术运算符 + - * / % Arithmetic operators + 运算符有三种身份 Additive Operator 1)加法:如 a + b; 2)连接:如 “ ...
- 尚学堂 JAVA Day1 概念总结
1.什么是计算机语言?一些符号,这些符号按照计算机硬件结构可以理解的方式排列组合,方便人与计算机,计算机与计算机之间进行信息的交换. 2.什么是机器语言?就是简单的二进制0和1的组合.该语言是计算机硬 ...
- 尚学堂 JAVA DAY12 概念总结
面向过程和面向对象的区别.(5 分)面向过程就好像:一位父亲吩咐自己8岁的小儿子去买啤酒.他需要考虑儿子从出门后的每一个步骤,叮嘱儿子出门怎么走,如何过马路,到了超市如何找到酒水区,怎么识别需要的品牌 ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- 尚学堂Java第一课
今天是北京尚学堂郑州分校开课的第一天,小班面授教学. 我很兴奋,是一个小白对IT大神渴求传道授业解惑的兴奋. 杨老师还是一贯耐心详细的手敲了第一堂课的完整大纲,必须给杨老师赞赞赞!!! 从幽默的制定班 ...
- 尚学堂Java面试题整理
博客分类: 经典分享 1. super()与this()的差别? - 6 - 2. 作用域public,protected,private,以及不写时的差别? - 6 - 3. 编程输出例如以 ...
- 尚学堂java答案解析 第一章
本答案为本人个人编辑,仅供参考,如果读者发现,请私信本人或在下方评论,提醒本人修改 一.选择题: 1.C 解析:java为了安全,中并没有引入C语言的指针概念. 2.AD 解析:B:Java先通过ja ...
- 尚学堂 JAVA Day13 abstract 关键字
Abstract (抽象的) 这是一个关键字. 可以且只可以 用来修饰 <类> <方法>. 1---Abstract 类 如:Animal,可以被理解一个抽象的类.动物嘛,只是 ...
- 尚学堂java 参考答案 第九章
一.选择题 1.AC 解析:A.注意题目是Collections不是 Collection,前者是一个until下的类,后者才是接口 C.Set中的数据是无序且不能重复的 2.A 解析:将发生数组越界 ...
随机推荐
- [转]Vim 复制粘帖格式错乱问题的解决办法
有时候,复制文本(尤其是代码)到 Vim,会出现格式错乱的问题.看样子,应该是自动缩进惹得祸.本文不去深究原因,直接给出解决方法. 1. paste 模式 运行如下命令,进入 paste 模式: :s ...
- ARM map(Program size)
1.Keil程式编译完之后,在List目录下会生成一个.map文件,里面包含各个存储块数据大小. Code:ARM 指令. RO(Read only)只读数据,如const int gu8test = ...
- HTML5之部分显示
- Poj 3368 Frequent values
/* 线段树区间合并 维护几个信息 到时候乱搞一下就好了 开始T了 有一种情况可以不用递归 直接算出来 */ #include<iostream> #include<cstdio&g ...
- Linux命令行下svn ignore忽略文件或文件夹用法
一.忽略单个目录 1.忽略文件夹 假如目录oa.youxi.com是从svn checkout出来的,在服务器本地目录添加了material,但是不希望把material加入版本控制,因此我们需要忽略 ...
- birt报表中使用多个数据集。
这个问题困扰了几天,也没搜到答案,由于工作需要,创建了两个数据集和两个表格,第一个数据集和表格之间没有任何问题.但是第二个数据集拖过去就显示不可用,除非拖到表格外面,当然也就没用了.一朋友说拖一个网格 ...
- ORACLE调度之基于事件的调度(二)【weber出品】
一.回顾 调度分基于时间的调度和基于事件的调度. 稍微复习一下前面的只是请浏览:<ORACLE调度之基于时间的调度(一)[weber出品]> 二.知识补充 1.队列:一种数据结构,就像一根 ...
- android 调用系统相机
// 调用相机拍照的请求码 public static final int REQUEST_TAKE_PHOTO_CODE = 1; public static final int REQUEST_T ...
- Extjs之遍历Store内的数据
Store作为数据的载体,通过下面的方法可以获得Store内的数据; Ext.define('haomlGeimjTongjGrid_store_data', { extend: 'Ext.data. ...
- yii2源码学习笔记
assets 前端资源文件夹,用于管理css js等前端资源文件等 commands 包含命令行命令,文件为控制器文件 config 应用的配置文件 controllers 控制器文件 mai ...