精华内容
下载资源
问答
  • Java_数组定义及常用方法

    万次阅读 2013-12-12 22:37:15
    Java_数组定义及常用方法 摘要:  从数组的一些简单介绍、到定义、声明、初始化、以及常用的方法、细微的区别、但是没有讲多维数组、多维数组本质是一维数组的延伸、以后有时间补充、有补充或者误导的...

    Java_数组定义及常用方法


    摘要:


           从数组的一些简单介绍、到定义、声明、初始化、以及常用的方法、细微的区别、但是没有讲多维数组、多维数组本质是一维数组的延伸、以后有时间补充、有补充或者误导的地方望不吝指正、不胜感激!

     

    一:数组的简介


           Java中的数组、是一种简单的线性数据存储结构、他用牺牲自动扩展大小来换取与集合相比的唯一优势——查询效率的提升。他本身是一种引用类型的数据、所以我们要使用数组就要首先声明、初始化他、而他的初始化的完成也就意味着此数组的大小将不再改变、而且具有初始值。当存储的是java原始基础类型时、默认值是不同基础类型值的默认值、当是引用类型时、如果我们没有指定具体的对象、则他的默认值是null。从数组的内部组成来看、觉得java中没有多维数组!所谓的多维数组其实就是一维数组的延伸、只是数组的值存放的是另一个数组的引用、依次深入、我们可以扩展到任意维度的数组、注意:数组的扩展的过程中只能存放相同类型或者子类型的数组!

            Java中的数组长度不变!存储的数据类型唯一!有时候我们会有种错觉觉得这两者都是不成立的、本质是因为java中继承的存在、我们定义的父类型的数组、他的数组元素也同样可以存放子类对象、这样就造成了数组存放对象可变的假象。当我们将数组的引用从一个对象改变到子类的对象的时候、感觉数组的长度变化、其实变的是引用指向的对象的长度、原来引用指向的对象长度没有变化、只是此对象被遗弃了而已、      

           对此只要记住一点:java中的数组时引用类型、当声明初始化一个对象时、数组的引用存放在栈内、实际对象存放在堆内存中、而我们平常所指的长度、类型都是具体对象的长度、类型!

            此外、Arrays是一个操作java数组的类、提供了一些非常实用的用于操作数组的类、还有就是java数组与集合比较相似。后面会有两者间的相互转换的方法。

    二:简单归纳:


        java中有两种数据类型:

                a)引用类型

                b)基础类型


        其中基础类型又有两种:

                b1)数值类型

                b2)及布尔类型。


      数组——也为java的一个数据类型、归类为引用类型。本文意图说清楚两点:

                1、数组的声明以及初始化。

                2、常用的数组方法。


      补充一点:对于我们常说的二维数组、多维数组其实是一维数组的延伸、这里暂时只围绕一维数组。

     

    三:数组的声明及初始化


               1、数组的声明:


                作为一种引用类型、就如我们平常使用引用类型的时候声明一样、一般有两种写法:


    	a) type[] arrayName;	exp: String[] strArray;
    	b) type	arrayName[];	exp: String strArray[];

                 第二种源于C的写法、由于很容易造成混淆、所以现在基本不使用这种声明方式了。

                2、数组的初始化:


                 数组的初始化有两种:

                a)  静态初始化——数组大小由系统分配、我们只为数组每个位置上赋值

     

    		String[] strArray1 = {"a", "b", "c", "d", "e"};
    		String[] strArray2 = new String[]{"a", "b", "c", "d", "e"};//在 new String[]中不能指定String数组的大小!
               

               b)动态初始化——只指定数值的大小、初始化工作由系统为我们完成(即为数组的每个位置赋初始值)


    		String[] strArray3 = new String[5];//此时String数组的每个位置上的值都由系统来初始化、使用默认的值""
    		
    		//我们能做的是动态的为strArray3每个位置上的值进行修改
    		for (int i = 0; i < strArray1.length; i++) {
    			//这里仅用原始的方法进行赋值。
    			strArray3[i] = strArray1[i];
    		}


    四:数组的常用方法

     

    package com.chy.array.usefulMethods;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.HashSet;
    import java.util.Set;
    
    import com.chy.array.bean.Student;
    
    @SuppressWarnings("all")
    public class ArrayUseFulMethoed {
    	
    	private static int[] intArray = {1, 2, 3, 4, 5};
    	private static String[] strArray = {"a", "b", "c", "d", "e"};
    	
    	
    	
    	/**
    	 * 填充元素、比较大小、复制元素
    	 */
    	public static void testFillArray(){
    		//注意字符串和对象的不同
    		Student[] student1 = new Student[4];
    		Student[] student2 = new Student[4];
    		System.out.println(Arrays.equals(student1, student2));//true
    		
    		Arrays.fill(student1, 0, 4, new Student(1,"chy"));
    		Arrays.fill(student2, new Student(1,"chy"));
    		System.out.println(Arrays.equals(student1, student2));//false
    		
    		
    		String[] str1 = new String[4];
    		String[] str2 = new String[]{"a", "a", "a", "a"};
    		String[] str3 = {new String("a"), new String("a"), new String("a"), new String("a")};
    		Arrays.fill(str1, "a");
    		System.out.println(Arrays.equals(str1, str2));//true
    		System.out.println(Arrays.equals(str2, str3));//true
    		
    		
    		String[] str4 = Arrays.copyOf(str1, 2);//是将传入的数组拷贝len个元素到新的数组、相当于复制本身的一部分或者全部形成一个全新的数组
    		System.out.println(str4.length + "=======" + Arrays.toString(str4));//	2=======[a, a]
    		
    		String[] str5 = new String[8];
    		System.arraycopy(str4, 0, str5, 6, 2);//是将str4从下标0开的2个元素拷贝到从下标6开始放置的数组str5中
    		System.out.println(str5.length + "=======" + Arrays.toString(str5));// 8=======[null, null, null, null, null, null, a, a]
    		
    		
    	}
    	
    	
    	/**
    	 * 以字符串的形式输出指定数组的“模样”
    	 */
    	public static void printOriginalArray(){
    		String intArrayToString = Arrays.toString(intArray);
    		System.out.println(intArrayToString);	//result: [1, 2, 3, 4, 5]
    	}
    	
    	/**
    	 * 将数组转化成List集合
    	 * 注意:不能直接将int[]转化为集合、因为asList()方法的参数必须是对象。应该先把int[]转化为Integer[]。
    	 * 对于其他primitive类型的数组也是如此,必须先转换成相应的wrapper类型数组。	
    	 */
    	public static void convetArrayToList(){
    		Integer[] integerArray = new Integer[intArray.length];
    		for (int i = 0; i < integerArray.length; i++) {
    			integerArray[i] = intArray[i];
    		}
    		ArrayList<Integer> integerList1 = new ArrayList<Integer>(Arrays.asList(integerArray));
    		
    		/*
    		 * 不能写成下面:
    		 * 		ArrayList<Integer> integerList2 = (ArrayList<Integer>)Arrays.asList(integerArray);
    		 * 返回的是List<T>、强转可以通过编译、但是不能正常使用。
    		 */
    		for(int i : integerList1){
    			System.out.print(i);
    		}
    		//result:	12345
    		System.out.println();
    		
    	}
    	
    	/**
    	 * 将List集合转换成数组
    	 */
    	public static void convetListToArray(){
    		
    		ArrayList<String> strList = new ArrayList<String>(Arrays.asList(strArray));
    		String[] strArrayFromList = new String[strList.size()];
    		strList.toArray(strArrayFromList);
    		System.out.println(Arrays.toString(strArrayFromList));	//result:	[a, b, c, d, e]
    		
    		/*
    		 * 注意:不能写成这样:String[] strArrayFromList = (String[])strList.toArray(strArrayFromList);会抛出ClassCastException。
    		 *  List.toArray()与List.toArray(T[] t)的区别在于:
    		 *  List.toArray()返回的是一个Object[]、不能强转成String[]、强转的话可以通过编译、但是不能进行String[]的操作
    		 *  而List.toArray(T[] t)会将list的值转换成T类型的数组。
    		 */
    		
    	}
    	/**
    	 * 将数组转换成Set集合
    	 */
    	public static void convertArrayToSet(){
    		Set<String> set = new HashSet<String>(Arrays.asList(strArray));
    		//Set具有无序性、所以输出结构不一定是原来数组元素存放顺序
    		System.out.println(set);	//result: [d, e, b, c, a]
    	}
    
    	/**
    	 * 判断某个数组中是否包含一个元素、思路:将数组转换成list使用list的contains方法
    	 */
    	public static void isContainObject(){
    		ArrayList<String> strList = new ArrayList<String>(Arrays.asList(strArray));
    		System.out.println(strList.contains("a"));	//result: true
    		
    		//另一种实现
    		Arrays.sort(strArray);
    		if(Arrays.binarySearch(strArray, "c") >= 0){
    			System.out.println(true);
    		}else{
    			System.out.println(false);
    		}
    	}
    	
    	/**
    	 * 将两个相同类型的数组连接起来 
    	 */
    	public static void connTwoSameArray(){
    		int[] intArray2 = new int[]{6, 7, 8, 9, 10};
    	}
    	
    	/**
    	 * 将数组中数据排序
    	 */
    	public static void sortArray(){
    		String[] str = {"c", "a" ,"d" ,"z" };
    		Arrays.sort(str);
    		System.out.println(Arrays.toString(str));
    		
    		//反序、
    		Arrays.sort(str, Collections.reverseOrder());
    		System.out.println(Arrays.toString(str));
    
    	
    		
    	
    	}
    	
    	
    	public static void main(String[] args) {
    		/*printOriginalArray();
    		convetArrayToList();
    		convetListToArray();
    		isContainObject();
    		convertArrayToSet();
    		sortArray();*/
    		testFillArray();
    		
    	}
    }
    

    展开全文
  • java二维数组字符数组Today we will look into Two-dimensional array in java. An array is like a container that can hold a certain number of values. 今天,我们将研究Java中的二维数组。 数组就像可以容纳...

    java二维数组字符数组

    Today we will look into Two-dimensional array in java. An array is like a container that can hold a certain number of values.

    今天,我们将研究Java中的二维数组。 数组就像可以容纳一定数量值的容器。

    Java中的二维数组 (Two Dimensional Array in Java)

    Let’s look at a few examples of defining java two-dimensional array or 2d array.

    让我们看一些定义Java二维数组或2d数组的示例。

    基本类型的Java二维数组 (Java Two Dimensional Array of primitive type)

    int[][] arr = new int[2][3];
    for (int i = 0; i < arr.length; i++) {
    	for (int j = 0; j < arr[i].length; j++) {
    		arr[i][j] = j;
    		System.out.print(arr[i][j] + " ");
    	}
    	System.out.println("");
    }

    Java二维对象数组 (Java Two Dimensional Array of Objects)

    String[][] arrStr = new String[3][4];
    for (int i = 0; i < arrStr.length; i++) {
    	for (int j = 0; j < arrStr[i].length; j++) {
    		arrStr[i][j] = "Str" + j;
    		System.out.print(arrStr[i][j] + " ");
    	}
    	System.out.println("");
    }

    So we can define a two dimensional array of primitive data types as well as objects. If you look at the above examples, two dimensional array looks like a matrix, something like below image.

    因此,我们可以定义原始数据类型和对象的二维数组。 如果看上面的例子,二维数组看起来像矩阵,就像下面的图像。

    However, in Java, there is no concept of a two-dimensional array. A two-dimensional array in java is just an array of array. So below image correctly defines two-dimensional array structure in java.

    但是,在Java中,没有二维数组的概念。 Java中的二维数组只是数组的数组。 因此,下面的图像在Java中正确定义了二维数组结构。

    Java多维数组示例 (Java multidimensional array example)

    Now if two-dimensional array in java is an array-of-arrays, then it should also support non-symmetric sizes as shown in below image.

    现在,如果java中的二维数组是一个数组数组,那么它也应该支持非对称大小,如下图所示。

    Well, it’s absolutely fine in java. Below is an example program that depicts above multidimensional array.

    好吧,在Java中绝对没问题。 以下是描述上述多维数组的示例程序。

    public class MultidimensionalArrayExample {
    
    	public static void main(String[] args) {
    
    		// creating and initializing two dimensional array with shortcut syntax
    		int[][] arrInt = { { 1, 2 }, { 3, 4, 5 } };
    		for (int i = 0; i < arrInt.length; i++) {
    			for (int j = 0; j < arrInt[i].length; j++) {
    				System.out.print(arrInt[i][j] + " ");
    			}
    			System.out.println("");
    		}
    
    		// showing multidimensional arrays initializing
    		int[][] arrMulti = new int[2][]; // yes it's valid
    
    		arrMulti[0] = new int[2];
    		arrMulti[1] = new int[3];
    
    		arrMulti[0][0] = 1;
    		arrMulti[0][1] = 2;
    		arrMulti[1][0] = 3;
    		arrMulti[1][1] = 4;
    		arrMulti[1][2] = 5;
    		for (int i = 0; i < arrInt.length; i++) {
    			for (int j = 0; j < arrInt[i].length; j++) {
    				System.out.print(arrInt[i][j] + " ");
    			}
    			System.out.println("");
    		}
    	}
    }

    If we run the above program, it will produce the following output.

    如果我们运行上面的程序,它将产生以下输出。

    1 2 
    3 4 5 
    1 2 
    3 4 5

    That’s all about two-dimensional array in java. In a similar way, we can define a multidimensional array in java too.

    这就是Java中的二维数组。 以类似的方式,我们也可以在java中定义多维数组。

    Reference: Java Array Oracle page

    参考: Java Array Oracle页面

    翻译自: https://www.journaldev.com/747/two-dimensional-array-java

    java二维数组字符数组

    展开全文
  • 首先,在java字符数组转字符串用的是 String str = new String(ch);(其中ch是一个字符数组);但是,字符数组定义时需要给他开空间,一般空间都是往大了开,以免数组越界;当用以上语句将字符数组转字符串时...

    首先,在java中字符数组转字符串用的是 String str = new String(ch);(其中ch是一个字符数组);

    但是,字符数组在定义时需要给他开空间,一般空间都是往大了开,以免数组越界;

    当用以上语句将字符数组转字符串时,我们往往想获的是字符数组存的具体的数据,而通过这个语句转了之后,你会发现,字符串的长度也变成了字符数组的长度,也就是在定义数组时开的空间,而不是具体的存入的字符串值的长度;

    eg:

    char ch[] = new char[100005];

    若ch[]数组中 只包含了“String”,实际长度为6,但ch[]所占的空间为100005,赋给字符串后,字符串长度也为100005,不与“String”相同。

    展开全文
  • C Java 字符串和字符数组区别

    千次阅读 2012-11-26 15:31:06
    字符数组定义编译可以通过,但却没有关闭数组,若其后需要申请内存,那么以后的数据均会放入其中,尽管它的长度不够,但若为 char s[5]={'a','b','c','d'};则系统会自动在字符串的最后存放一个结束符,并...
    1. C 语言
    
      在C语言中字符串和字符数组基本上没有区别,都需要结束符;如:char s[4]={'a','b','c','d'};此字符数组的定义编译可以通过,但却没有关闭数组,若其后需要申请内存,那么以后的数据均会放入其中,尽管它的长度不够,但若为 char s[5]={'a','b','c','d'};则系统会自动在字符串的最后存放一个结束符,并关闭数组,说明字符数组是有结束符的;
        而字符串定义的长度必须大于字符序列的长度,如:char s1[4]={"abcd"};编译不能通过,而应写成char s1[5]={"abcd"};并且系统会自动在字符串的最后存放一个结束符,说明字符串有结束符;
    在C语言中使用strlen()函数可以测数组的长度,strlen()函数计算的时候不包含结束符'/0'。
    char s[5]={'a','b','c','d'};
    char s1[5]={"abcd"};
    int a=strlen(s);
    int b=strlen(s1);
    结果是a,b均为4;


    2.Java语言
      字符串和字符串数组都是不需要结束符的;
      如:char[] value={'j','a','v','a','语','言'};
            String s1=new String(value);
            String s2="java语言";  
      int a=value.length;
        int b=s1.length();
        int c=s2.length();
      运行得到的结果a,b,c都是6,说明字符串和字符串数组都不需要结束符。但注意此处value.length和s1.length(),在数组中有名常量length可以记录数组对象的长度,而length()是File类中的一个实例方法,用于返回文件的大小,当然也可以返回字符串的大小。
    展开全文
  • 转自:http://www.pinlue.com/article/2020/10/0504/0111276021425.html
  • java数组定义

    2017-09-06 07:57:19
    java数组定义 5 坐怀不乱60 | 浏览 127162 次 问题未开放回答 |举报 ...java数组定义字符数组:1、String[] str=new String[5];2、String[] str=new String[]{"a","b"};3、String[] str={"a
  • 1.java定义字符串 String str="hello world
  • 数组共有三种定义方式 1.定义且初始化一个数组(静态初始化) int[] array1 = {1,2,3,4,5}; 2.定义了一个数组,但是没有初始化,用new关键字创建数组对象 int[] array2 = new int[5]; 3.动态初始化数组 int[] ...
  • Java数组定义及初始化

    万次阅读 多人点赞 2018-10-13 00:29:25
    定义格式 数组类型[] 数组名 = new 数据类型[数组长度];  其中,数据类型可以是8种基本的数据类型,也可以是引用数据类型。 注意: 在给数组命名的时候,一般在数组... //定义了一个包含整型元素的数组 ...
  • java 如何把字符数组转成字符 例如 char[]b = {'a','b','c','x'}; 转化成字符串 str = "abcx";
  • 一维数组有以下两种定义方式,推荐使用第一种定义方式 &amp;amp;amp;amp;amp;amp;lt;数据类型&amp;amp;amp;amp;amp;amp;gt;[] &amp;amp;amp;amp;amp;amp;lt;数组名称&amp;amp;a
  • // 解决数组长度不可变的问题 // 因为数组定义的时候已经给定了长度,所以如果有新的元素加入,数组的本身已经放不下了 ...// java 数组字符串 【Arrays.toString(array)】 System.out.println("arr3 的.
  • java定义字符数组

    2020-03-07 16:57:32
    各位大佬,java中怎么实现定义一个字符数组,让每个索引对应一句话呀?(初学者(*^▽^*))3q~~
  • Java数组定义和二维数组

    千次阅读 2017-02-07 12:34:13
    java数组定义字符数组: 1、String[] str=new String[5]; 2、String[] str=new String[]{"a","b"}; 3、String[] str={"a","b"}; 整形数组: 1、int[] i=new int[5]; 2、int[] i=new int[]{0,1}; 3、int[] i...
  • Java 数组定义及使用数组定义数组的初始化静态初始化动态初始化数组的使用 数组定义 语法有两种: type arrayName[]; type[] arrayName; type 为 Java 中的任意数据类型,包括基本数据类型和引用类型, ...
  • java 字符数组

    千次阅读 2012-09-24 09:05:59
    Java字符串数组的基本操作和转换的实现! 主要是:字符和字符串的转换,字符数组和字符串的转换! 1.一维数组:  定义1:String [ ]br= new String[10]  定义2:String []br1; //一维数组  ...
  • Java数组定义和使用

    千次阅读 多人点赞 2020-10-14 13:32:10
    目录:1.数组基本用法 :1.1什么是数组 1.2 创建数组 1.3数组的使用 2.数组作为方法的参数:2.1...数组常见操作:4.1 数组字符串 4.2数组拷贝 4.3检查数组有序性 4.4 数组排序(冒泡) 4.5 数组数字排列 5. 二维数组
  • 数组是一种引用类型的变量,因此使用数组定义一个引用变量相当于定义一个指针,定义时还未指向任何有效的内存,因此定义数组时不能指定数组的长度,当对数组进行初始化后才可以使用 数组初始化: 静态初始化 ...
  • Java 定义字符数组

    2016-05-13 17:29:00
    //定义数组 String psid2 = ""; //定义字符串 psid2 +=","+item.getId(); //往字符串里放值用“,”隔开 if(psid2.length() > 0){ //判断如果字符串不为空,转换成字符数组 qyidArr = psid2...
  • java中的数组定义和使用

    千次阅读 2016-05-07 09:15:44
    不使用数组定义100个整形变量:int i1;int i2;int i3 使用数组定义 int i[100]; 数组定义:int i[100];只是一个伪代码,只是表示含义的 一维数组 一维数组可以存放上千万个数据,并且这些数据的类型是完
  • public static String arrReverse(String str) { ...// 提取字符数组 StringBuffer buf = new StringBuffer(""); for (int i = 0; i < strArray.length / 2; i++) {// 数组反转算法 char temp = strArray[i...
  • import java.util.Arrays; class demo{ public static void main(String[] args){ char[] a = new char[5]; System.out.println(Arrays.toString(a)); } } 然后编译运行,得到答案为一个a。 wh...
  • Java数组定义及常用方法

    万次阅读 2021-01-23 16:14:24
    先声明数组(定义数组):尚未开辟内存空间 再创建数组:在内存中,根据数组长度,开辟一块"连续"的内存空间,并完成初始化(默认值) 数据类型 默认值 整数 0 浮点数 0.0 char 空字符 boolean false ...
  • Java -数组-String字符

    千次阅读 2015-06-11 22:42:14
    定义数组是一个变量,存储相同数据类型的一组数据 a.数组中储存的数据叫做数据元素 b.不管数组中有多少个元素,该数组只有一个名词叫做:数组名称 c.数组中的元素按顺序的排列,表明元素在数组中的位置 d.通过...
  • Java字符数组转集合方法

    千次阅读 2020-11-07 15:09:52
    //定义一个字符串 String zhuan = "1,2,3,4,5,6,7,8,9"; //分割字符串 String[] split = zhuan.split(","); // 把数组转成集合 List<String> stringList = Arrays.asList(split); //输出结果 S
  • Java字符数组排序

    千次阅读 2019-04-22 11:10:30
    利用一个字符数组排序讲解anonymous class,method reference以及lambda expression。后面代码体现了,inner class的lambda可以用整个outer class的field,但是必须是final类型才可以直接食用
  • * 数组查找操作:定义一个长度为10的一维字符数组,在每一个元素存放一个单词; * 然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词, * 包含这个单词就打印出“Yes”,不包含就打印出“No” *...
  • Java数组字符串之间的转换方法(一) Array2String
  • ①创建数组方式3种 ①第1种方法 public class MyTest { public static void main(String[] args){ //method 1 int[] array=new int[6]; int aa=array[4]; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 356,376
精华内容 142,550
关键字:

java字符数组定义方式

java 订阅