Arrays类的运用,二分法,数组的复制,命令行参数的运用,二维数组,Object,equals
/*Arrays
jdk中为了便于开发,给开发者提供了Arrays类,
其中包含了很多数组的常用操作。例如快速输出、排序、查找等。*/
import java.util.Arrays;
public class ShuZun {
public static void main(String[] args) {
//数组的字符串形式
int[] arr={8,3,6,7,2,9};
//数组的【输出】
String str=Arrays.toString(arr);
System.out.println(str);
//sort对数组排序(只能升序)-》内部使用快速排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
/*/fill 填充数组(arr,1,5,9)第一位数字是数组开始的位置,
第二位数字数组结束的位置但java记前不记后所以位置是1.2.3.4
第三位是你要覆盖在上面的数
如果全部填充一个数:Arrays.fill(arr,2)
*/
Arrays.fill(arr,1,5,9);
System.out.println(Arrays.toString(arr));
/*equals(arr,arr1)判断两个数组是否相等
数组相等的条件是:1.长度相等2.对应位置元素相等*/
int[] arr1={1,2,3};
System.out.println(Arrays.equals(arr,arr1));
}
}
/*Arrays
二分法查找必须是有序的数组,如果找到返回索引;
如果没有找到,返回-插入点-1。插入点就是key应该放到数组的位置。
*/
import java.util.Arrays;
public class ShuZun {
public static void main(String[] args) {
int[] arr={2,5,6,7,8,9};
int t=6;
int loc=Arrays.binarySearch(arr,t); System.out.println("t的位置:"+loc);
// 二分法查找只适用于有序数组。
}
}
/*Arrays数组的复制
copyOf(arr,len) 把arr复制len个长度的元素并返回新数组。
如果len>arr.length,新数组的长度末尾用0填充。
copyOfRange(arr,from,to) 从arr中from(包含)位置开始复制到to(不包含)
这个范围的元素到新数组中。含头不含尾。
*/
import java.util.Arrays;
public class ShuZun {
public static void main(String[] args) {
int[] arr={1,2,3,4,5};
//第一种后面是几位,就复制几个元素过去,如果超过原数组,末尾就用0填充
int[] newArr=Arrays.copyOf(arr,6);
System.out.println(Arrays.toString(newArr));
//第二种两个数是确定复制元素的位置(含头不含尾)
int[] newArr2=Arrays.copyOfRange(arr,1,3);
//第三种
System.out.println(Arrays.toString(newArr2));
int[] arr2=new int[arr.length];
System.arraycopy(arr,1,arr2,0,3);
//(源数组,从原数组开始的位置,现数组,从这个位置开始存放,复制多少个)
//如果末尾还有空间就用0填充
System.out.println(Arrays.toString(arr2));
}
}
/*
在程序运行过程中,可以向应用程序传递一些参数,这些参数称为命名行参数
命令行参数以字符串的形式传入args数组中。
* 可以一次传递0-多个参数,以空格分割。
如果参数中本身包含空格,需要使用引号引起来。*/
public class Hello {
public static void main(String[] args){
System.out.println(args.length);
for (int a=0;a<args.length;a++){
System.out.println(args[a]);
}}}
/*Arrays。二维数组基础
二维数组就是数组的数组,数组的元素也是数组。
二维数组表示行列二维结构。
*/
import java.util.Arrays;
public class ShuZun {
public static void main(String[] args) {
//二维数组(int[])[]
//声明 int[][]arr;
// 初始化一个能存3个一维数组的二维数组
//arr = new int[3][];
/*赋值
int[] arr1 = {1,3,4,5};
int[] arr2 = {1,3,4};
int[] arr3 = {2,1,6,4}; arr[0] = arr1;
arr[1] = arr2;
arr[2] = arr3; System.out.println(arr);一个二维数组地址
System.out.println(Arrays.toString(arr));三个一维地址*/ /*声明一个规则的二维数组,3行4列
int[][] arr;
arr = new int[3][4]; arr[0][0] = 10;
arr[0][1] = 20;
arr[0][2] = 30;
arr[0][3] = 40; arr[1][0] = 100;
arr[1][1] = 200;
arr[1][2] = 300;
arr[1][3] = 400; arr[2][0] = 1000;
arr[2][1] = 2000;
arr[2][2] = 3000;
arr[2][3] = 4000; System.out.println(Arrays.toString(arr));*/ //声明字面量二维数组
int[] [] arr={
{1,2,3,4},
{11,22,33},
{111,222,333,4444},
};
System.out.println(Arrays.toString(arr));
//二维数组里的3个一维数组的地址
for(int t=0;t<arr.length;t++){
for(int i=0;i<arr[t].length;i++){
System.out.print(arr[t][i]+"\t");
}//二维数组遍历输出
System.out.println();//换行
} }
}
Object 类是所有类的根类。
如果一个类没有显示继承另外一个类,那么该类一定继承于Object。
toString() 返回对象的字符串表示形式 equals(Object obj) 用于判断两个对象是否相等。
== 比较两个对象的内存地址或基本数据类型的比较,object默认equals实现比较内存地址。
equals:用于比较两个对象的内容(属性)是否相等。 当自定义对象时,要比较自定义对象是否相等,就必须通过equals方法比较两个对象属性值是否相等,那就必须重写Object的equals方法。
public class Test01 {
public static void main(String[] args) {
Object obj = new Object();
// 输出对象时,默认调用toString方法
System.out.println(obj);// 类型@内存地址
System.out.println(obj.toString());
public boolean equals(Object obj) {
if(this == obj) {
return true;
}
Student s = (Student) obj;
if(this.sid.equals(s.sid) && this.name.equals(s.name) && this.age == s.age) {
return true;
}else {
return false;
}
Arrays类的运用,二分法,数组的复制,命令行参数的运用,二维数组,Object,equals的更多相关文章
- 二维数组过滤,根据多个条件获取二维数组中指定的arr
/** * 二维数组过滤,根据多个条件获取二维数组中指定的arr * @param $data_arr * @param $lm_number * @param $source_type * @par ...
- 【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数
// 二维数组中的查找,杨氏矩阵在一个二维数组中.每行都依照从左到右的递增的顺序排序. // 每列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个数组和一个数.推断数组中是否包括这个数 #i ...
- C语言:将3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边。-在m行m列的二维数组中存放如下规律的数据,
//将3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边. #include <stdio.h> #define M 3 #define N 5 ...
- 廖雪峰Java1-4数组操作-5命令行参数
adb和ideviceinstaller提供了许多参数供我们使用.命令行参数提供了这样的入口,针对不同的参数执行不同的命令. 1.命令行参数 命令行参数是一个String[] 数组,由JVM接收用户输 ...
- 剑指offer-特定二维数组中查找一个元素是否存在-二分搜索-二维数组
int [][] array ={ {1,2,8,9}, {2,4,9,12}, {4,7,10,13}, {6,8,11,19} }; 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都 ...
- C语言数组篇(五)多级指针和二维数组指针的区别
多级指针 以二级指针为例 二级指针的由来是 指针数组 的指针形式. int *p[10] 读取的顺序是 p[] --> 10个空间的数组 * p[] --> 这10个空间的数组里面存放 ...
- 编写一段代码,打印一个M行N列的二维数组转置。(交换行和列)
import edu.princeton.cs.algs4.*; public class No_1_1_13 { public static void main(String[] args) { i ...
- 常用的Arrays类和二维数组以及二分法的介绍
---恢复内容开始--- 1.Array类 Array中包含了许多数组的常用操作,较为常见的有: (1)快速输出 import java.util.Arrays; public class Test{ ...
- 数组属性的习题、Arrays工具、二维数组
一.数组的练习 1.声明一个char类型的数组, 从键盘录入6个字符: [1]遍历输出 [2]排序 [3]把char数组转化成一个逆序的数组. import java.util.Scanner; pu ...
- Arrays工具、二维数组以及LeetCode练习题
1 Arrays PS:Arrays位于java.util包下 int binarySearch(type[] a, type key); 使用二分法查询 key 元素在 a 数组中的索引,如果数组不 ...
随机推荐
- JS学习笔记:(一)浏览器页面渲染机制
浏览器的内核主要分为渲染引擎和JS引擎.目前市面上常见的浏览器内核可以分为这四种:Trident(IE).Gecko(火狐).Blink(Chrome.Opera).Webkit(Safari).这里 ...
- python调用openstack的api,create_instance的程序解析
python调用openstack的api,create_instance的程序解析 2017年10月17日 15:27:24 CloudXli 阅读数:848 版权声明:本文为博主原创文章,未经 ...
- 《JAVA与模式》之工厂方法模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述工厂方法模式的: 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymor ...
- 【THUSC2017】【LOJ2979】换桌 线段树 网络流
题目大意 有 \(n\) 个圆形的桌子排成一排,每个桌子有 \(m\) 个座位. 最开始每个位置上都有一个人.现在每个人都要重新选择一个座位,第 \(i\) 桌的第 \(j\) 个人的新座位只能在第 ...
- Spring框架的@Valid注解
上一篇文章介绍了springmvc的get请求参数可以是一个自定的对象.那么如何限制这个对象里的参数是否必传呢? 方法一:在代码逻辑里取出对象里的这个值,手动进行判断 方法二:使用@Valid注解,在 ...
- thinkphp 迁移数据库 -Phinx 简单说明文档
php think migrate migrate:create Create a new migration ///创建 migrate:rollback Rollback the last or ...
- django restframework Serializer field
SerializerMethodField 这是一个只读字段.它通过调用它所连接的序列化类的方法来获得它的值.它可用于将任何类型的数据添加到对象的序列化表示中. 签名: SerializerMetho ...
- CF1152E Neko and Flashback--欧拉路径
RemoteJudge 第一次见到欧拉路径的题 注意到\(b\)和\(c\)的构造方法很特殊,即对于一个位置(经过\(p\)作用后)\(i\),若两个数分别为\(b_i\)和\(c_i\),那么在\( ...
- Sublime Text3—设置快捷键打开浏览器
在不同浏览器查看代码效果可谓是家常便饭,所以用不同快捷键对应打开不同浏览器可以大大提高工作效率. 本篇分享个简单的方法只需二步: 一.安装插件SideBarEnhancements ctrl+shif ...
- 关于vue-router 中参数传递的那些坑(params,query)
1.query方式传参和接受参数 传参 this.$router.push({ path:'/xxx' query:{ idname:id } })接收的方式:this.$route.query.id ...
/*Arrays。二维数组基础