尚学堂 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 解析:将发生数组越界 ...
随机推荐
- 非空验证(源代码Java版)
import java.util.Map; /** * 非空验证工具类 */ public class UntilEmpty { /** * @see: 验证string类型的是否为空 */ publ ...
- HeaderViewListAdapter
该类其实就是普通使用的Adapter的一个包装类,就是为了添加header和footer而定义的.该类一般不直接使用,当ListView有header和footer时,ListView中会自动把Ada ...
- 使用ssh对服务器进行登录
一.什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录. 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会 ...
- Codeforces 190E - Counter Attack
[题意]给一个无向图的反图(即给定的边实际上不存在,而未给的边是存在的),求连通块数.(点数n<=5*10^5,边数m<=10^6) 一开始我想的用DFS,枚举每一个点,跳过不存在的点,直 ...
- RoadTrip 学习笔记
#RoadTrip 学习笔记 本篇是在Cmd Markdown中写完粘贴来的. RoadTrip介绍 RoadTrip 项目地址:https://github.com/romainguy/road-t ...
- scn转换为十进制
- js删除数组指定的某个元素
1.给js数组对象原型加indexof方法 获得元素索引 Array.prototype.indexOf = function(val) { for (var i = 0; i < this.l ...
- 解决 asp.net 伪静态 IIS设置后 直正HTML无法显示的问题
asp.net+UrlRewriter来实现网站伪静态,实现伪静态有一些好处,比如对于搜索引擎更好收录页面,还有一个好处就是隐藏了真实地址的参数,所以有独立服务器的朋友,配置IIS实现伪静态功能,挺不 ...
- tomcat中有关配置文件的说明
在以往的tomcat使用中本人一直都没有注意到tomcat的conf目录下配置文件的作用,都是"拿来主义"的思想,从未深究.但是最近遇到很多有关tomcat配置的问题,很是头大,所 ...
- 浮点与整形在GUI下的相关思考
平时不接触绘图,似乎感觉不到浮点和整形所带来的区别,这次项目中意外的碰到了浮点与整形进行迁移的工作.因此写点心得,让自己以后也可以看看. 用浮点作图有个最大的弊端就是边界情况,比如你需要在点(20,2 ...