双重for循环

外循环控制行,内循环控制列。

//乘法表
for(int i = ; i <= ; i++) {
for(int j = ; j <= i ;j++) {
System.out.print(j+"*"+i+"="+(i*j)+"\t");
}
System.out.println();
}

DecimalFormat

#:一个数字

0:一个数字,不够位数用0补位

DecimalFormat f = new DecimalFormat("###.##");
DecimalFormat f = new DecimalFormat("000.00000");
System.out.println(sum);
System.out.println(f.format(sum));
System.out.println(f.format(34.567));

break

用在 switch和循环中。
用在单层循环中,用来结束循环。

continue

用在循环中。
作用 结束本次循环进行下一次循环条件判断。

对于双重循环,可以自定义一个标签,break或continue 到标签处。

一维数组

Java 语言中提供的数组是用来存储固定大小的同类型元素。

声明数组

首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:

int[] arr;//声明数组,告诉计算机我要存储一组整数(推荐)

//int arr[];
int x1,x2,x3;//声明了3个int类型的变量
int [] n1,n2,n3;//声明了3个数组
int num1 [],num2,num3;//声明了一个int类型的数组num1,两个Int类型的变量。

创建数组

arr = new int[6];//创建一个数组,计算机在内存中分配6个空间,并初始化

数组的元素是通过索引访问的。数组索引从 0 开始,所以索引值从 0 到 arr.length-1。

数组初始化

//动态初始化:我们制定长度,系统赋值。
int[] arr = new int[5];//0
//初始值
//整数:0  小数:0.0  布尔:false  char:\0000  
//String:null  
//静态初始化:我们赋值,系统分配长度(arr2.length)
int[] arr2 = {11,22,33};

赋值数组

arr[2]=33;

栈stack

  • 是作为构思算法的辅助工具,不是完全的数据存储工具。是插入和删除操作被限制在表的线性表。
  • 只能从栈顶入栈,也只能从栈顶出站
  • 是一种后进先出的结构

遍历数组

普通for循环

public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// 计算所有元素的总和
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// 查找最大元素
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
}
}

增强for循环

public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5}; // 打印所有数组元素
for (double element: myList) {
System.out.println(element);
}
}
}

增强for循环的特点:

【1】简洁

【2】不能制定范围访问,只能访问全部

【3】不能反转输出,只能正序访问

【4】不能修改数组元素的值

数组排序

冒泡排序

 package day4;

 public class Demo12 {

     public static void main(String[] args) {
// 冒泡排序
int[] arr = {,,,,};
int temp;
for(int i = ; i < arr.length-;i++) {//轮
for(int j = ; j < arr.length--i; j++) {//次
if(arr[j] > arr[j+]) {
temp = arr[j];
arr[j]= arr[j + ];
arr[j + ] = temp;
}
}
}
for(int n: arr) {
System.out.println(n);
} } }

选择排序

 package day4;

 import java.util.Arrays;

 public class Demo13 {

     public static void main(String[] args) {
// 选择排序
int [] arr = {,,,,};
int temp;
for(int i = ; i < arr.length-; i++) {//位置
for(int j = i + ; j < arr.length; j++) {
if(arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for(int n:arr) {
System.out.println(n);
}
// System.out.println(Arrays.toString(arr));
} }

数组查找方法

普通查找方法(效率比较低)

 public class ArrayTest {

     public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {,,,,,,,};
int num=searchKey(arr,);
System.out.println(num);
}
//查找一个元素在数组中的第一次出现的位置
public static int searchKey(int[] arr,int key) {
for(int i=;i<arr.length;i++) {
if(arr[i] == key) {
return i;
}
}
return -;//-1代表的是交表不存在的情况
}
}

二分查找法(效率比较高)

 public class binarySearch {
public static void main(String[] args) {
int[] arr = {,,,,,,,};
int num =searchArray(arr,);
System.out.println(num);
}
//二分查找。前天:数组必须是有序的。
/*
* 思路:
* 1.通过角标先获取中间角标上的元素
* 2.让该元素和要找的数据比较。
* 3.如果要找的数大了,缩小范围,要找的范围应该是 中间的角标+1---尾角标
* 如果要找的数效率,要找的范围 头角标---中间角标-1。
* 4.不断如此重复,就可以找到元素对应的角标。
* */
public static int searchArray(int[] arr,int key) {
int max,min,mid;
min = ;
max = arr.length-;
mid = (min+max)>>;
while(arr[mid]!=key) {
if(key > arr[mid]) {
min = mid + ;
}else{
max = mid - ;
}
//判断元素是否存在。
if(max<min) {
return -;
}
mid = (min+max)>>;
}
return mid;
}
}
 public class ArrayTest1 {
public static void main(String[] args) {
int[] arr = {,,,,,,,};
int num =binarySearch(arr,);
System.out.println(num);
}
//二分查找。前天:数组必须是有序的。
/*
* 思路:
* 1.通过角标先获取中间角标上的元素
* 2.让该元素和要找的数据比较。
* 3.如果要找的数大了,缩小范围,要找的范围应该是 中间的角标+1---尾角标
* 如果要找的数效率,要找的范围 头角标---中间角标-1。
* 4.不断如此重复,就可以找到元素对应的角标。
* */
public static int binarySearch(int[] arr,int key) {
//定义单个变量,记录头角标,尾角标,中间角标
int max,min,mid;
min = ;
max = arr.length-;
while(min<=max) {
mid = (min+max)>>;
if(key > arr[mid]) {
min = mid + ;
}else if(key < arr[mid]) {
max = mid - ;
}else {
return mid;
}
}
return -;
}
}

数组的复制

 package cn.java.study;

 import java.util.Arrays;

 public class Demo5 {
public static void main(String[] args) {
int[] arr1 = {,,,,};
int[] arr2 = new int[arr1.length];
// 源数组 源数组起始位置 目标数组 目标数组起始位置 复制长度
System.arraycopy(arr1, , arr2, , );
System.out.println(Arrays.toString(arr2));
}
}

常用API之Arrays类

 package cn.java.study;
//工具类
import java.util.Arrays; public class Demo5 {
public static void main(String[] args) {
//Arrays
int[] arr = {,,,,,};
//将数组转换成字符串
System.out.println(Arrays.toString(arr));
//对数组进行升序排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
//排序数组名 排序数组元素开始位置 排序数组元素结束位置(实际上,取到终止位置减一)[起始位置,终止位置)
Arrays.sort(arr,,);
System.out.println(Arrays.toString(arr));
//多核处理器下并行操作使用
Arrays.parallelSort(arr);
//二分查找下标,数组 查找的数字,返回的是插入点,没有的话返回的是负的插入点减一的值
System.out.println(Arrays.binarySearch(arr, ));
//数组比较:元素的个数和对应位置的数组元素相同
int[] arr1 = {,,};
int[] arr2 = {,,};
System.out.println(Arrays.equals(arr1, arr2));
//数组的填充,将数组中所有的元素替换为666
Arrays.fill(arr, );
System.out.println(Arrays.toString(arr));
//数组的复制,返回的是一个数组, (要复制的数组,几个元素)
int[] arr3 = Arrays.copyOf(arr1, );
System.out.println(Arrays.toString(arr3));
}
}

二维数组

格式1:

int[][] arr = new int[][];
  • 定义了名称为arr的二位数组
  • 二维数组中有3个一维数组
  • 每一个一维数组中有2个元素
  • 一维数组的名称分别为arr[0],arr[1],arr[2]
  • 给第一个一维数组1角标位赋值为666的写法是:arr[0][1] = 666;

System.out.println(arr); // [[Ie6f7d2二位数组实体   e6f7d2是哈希值,[是数组,[[二位数组

格式2:

int[][] arr = new int[][];
arr[] = new int[];
arr[] = new int[];
arr[] = new int[];

Day4 数组的更多相关文章

  1. day4 数组学习

    java提供的数组排序操作:java.util.Arrays.sort(数组名): java提供的数组复制:system.arraycopy(源数组名称,源数组开始点下标,目标数组名称,目标数组开始下 ...

  2. [Day4]Switch语句、数组、二维数组

    1.选择结构switch (1)格式 switch (表达式){ case 目标值1: 执行语句1; break; case 目标值2: 执行语句2; break; ...... case 目标值n: ...

  3. day4 二维数组旋转90度

    二维数组的旋转其实就是数组里面的元素对调的情况:下面有一个4×4的二维数组,[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]],现在要求把 ...

  4. 【NumPy学习指南】day4 多维数组的切片和索引

    ndarray支持在多维数组上的切片操作.为了方便起见,我们可以用一个省略号(...)来 表示遍历剩下的维度. (1) 举例来说,我们先用arange函数创建一个数组并改变其维度,使之变成一个三维数组 ...

  5. python-Day4-迭代器-yield异步处理--装饰器--斐波那契--递归--二分算法--二维数组旋转90度--正则表达式

    本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

  6. Day4:T1小技巧(类似于指针操作)T2搜索+小细节

    Day4:其中有很多小技巧get T1 一直没有听到过像这样的小技巧的略专业名词,有点类似于指针操作,之前有碰到过很多这样的题目 每次都是以不同的形式出现,但是感觉思想还是有点接近的吧(就比如某天有一 ...

  7. 【JAVA零基础入门系列】Day4 变量与常量

    这一篇主要讲解Java中的变量,什么是变量,变量的作用以及如何声明,使用变量. 那么什么是变量?对于初学者而言,可以将变量理解为盒子,这些盒子可以用来存放数据,不同类型的数据需要放在对应类型的盒子里. ...

  8. 【JAVA零基础入门系列】Day10 Java中的数组

    什么是数组?顾名思义,就是数据的组合,把一些相同类型的数放到一组里去. 那为什么要用数组呢?比如需要统计全班同学的成绩的时候,如果给班上50个同学的成绩信息都命名一个变量进行存储,显然不方便,而且在做 ...

  9. loj6068. 「2017 山东一轮集训 Day4」棋盘 二分图,网络流

    loj6068. 「2017 山东一轮集训 Day4」棋盘 链接 https://loj.ac/problem/6068 思路 上来没头绪,后来套算法,套了个网络流 经典二分图 左边横,右边列 先重新 ...

随机推荐

  1. Tomcat启动慢原因之二 he APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path

    Tomcat启动时提示: 信息: The APR based Apache Tomcat Native library which allows optimal performance in prod ...

  2. windows 查看端口

    windowsnetstat命令查看进程:netstat -ano查看占用端口进程:netstat -ano|findstr “端口号”,例子netstat -ano|findstr “8080”.t ...

  3. 那些年我们对npm 和 cnpm 的误区

    1. npm 和 cnpm 的区别 相信很多人都不太明白 npm 和 cnpm 到底是什么东东, 为啥在国内要用 淘宝镜像使用 cnpm, (1) 两者之间只是 node 中包管理器的不同哟, (2) ...

  4. 转:PHP中的使用curl发送请求(GET请求和POST请求)

    原文地址:http://www.jb51.net/article/104974.htm 使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 1.初始 ...

  5. Android Studio cannot resolve symbols

    引入了第三方类库,不管怎么编译  clean 都找多到类库 关闭重新打开android studio就好了.....  

  6. 使用镶嵌数据集 MosaicDataSet管理不同分辨率影像数据

    镶嵌数据集 MosaicDataSet是Esri推出的一种用于管理海量影像数据的数据模型,它是Geodatabase数据模型的一个子集定义. 该数据模型强大之处在于它能统一管理不同采集时间.不同采集来 ...

  7. CentOS7系列--5.1CentOS7中配置和管理KVM

    CentOS7配置和管理KVM 安装与配置虚拟化软件KVM ( Kernel-based Virtual Machine ) + QEMU,它要求计算机的CPU支持Intel VT or AMD-V功 ...

  8. chrome 浏览器调用 ocx 插件(二)

    原文:http://blog.csdn.net/wangchao1988ok/article/details/46561537 chrome 版本:43.0.2357.124 之前写过关于 chrom ...

  9. RadioGroup实现类似ios的分段选择(UISegmentedControl)控件

    在ios7中有一种扁平风格的控件叫做分段选择控件UISegmentedControl,控件分为一排,横放着几个被简单线条隔开的按钮,每次点击只能选择其中一个按钮,他类似于tabbar但是又稍微有点区别 ...

  10. 类和类的关系——java

    类(对象)之间的关系   1.继承关系(子类自动拥有了父类所有的成员变量和普通方法,如果父类的成员变量和普通方法是private 的,那么子类只有拥有权,没有使用权.父类的构造方法在子类的构造方法执行 ...