Java学习第五课--数组和字符串

  数组简单理解是相同类型的集合。数组是有序的,通过下标来区分每一个元素。数组的下标从0开始到数组的长度-1 结束。一个数组创建之后,那么它的长度就不能在改变。

  数组中除了可以存放原生数据类型外,还可以存放引用数据类型。

  数组创建和初始化:

    ① int[ ]  a =new int[ 3 ] ;

       a[0]= 1 ; a[1] = 2 ; a[2] = 3 ;

    ② int[] a = new int[]{1 , 2 , 3 } ;

    ③ int[] a = { 1, 2 , 3

  数组的使用;

  数组创建和初始化之后,我们就可以使用了。 数组使用的语法是 数组名[下标 ] (a[ 0 ] ) 。 

  定义一个数组然后遍历它的代码。

  int a = {1,2,3}
  for(int i = 0 ; i < a.length ;i++)
  {
       system.out.println(a[i]) ;
  }

  数组的排序: 选择排序 、 冒泡排序
  选择排序应该算是一个比较简单的算法。基本的思路是:使用两层循环。第一遍遍历出数组中最大或者是最小的元素,与数组中下标为0的元素交换位置。之后在遍历数组中剩余元素中最大或者最小的元素,与数组中下标为1的元素交换位置。如此下去将整个数组遍历n遍之后,就会将数组进行从大到小或者从小到达进行排序。

  具体代码:

  int[] a =  {10 , 25 , 1 , 58 ,34 ,96 , 5} ;
  int index = 0;
  int temp ;
  for(int i = 0 ; i < a.length ; i++)
  {
			
	int max = a[i] ;
	index = i ;
	for(int j = i ; j < a.length ; j++)
	{
		if( max < a[j])
		{
			max = a[j] ;
			index = j ;		
		}
			
	}
	temp = a[index] ;
	a[index] = a[i] ;
	a[i] = temp ;
			
  }

  冒泡排序:把数组中较小的元素看作成一个气泡,在数组遍历的过程中让其逐渐的上浮。在每一次的遍历之中都让数组中值最大的元素下沉到数组中下边最大,第二大。。的位置上。

  代码如下:

  for(int i = 0 ; i < a.length ; i++)
  {
	int temp = 0 ;
	for(int j = 0 ; j < a.length - i - 1 ; j++)
	{
		if(a[j] > a[j+1])
		{
			temp = a[j+1] ;
			a[j+1] = a[j] ;
			a[j] = temp ;
					
		}
	}
  }

  二维和三维数组:指使用多个索引来访问一个数组元素,它的使用可能更加的复杂。

  多维数组的声明和初始化:

  int[] [] a = new int [3] [5]  ;

  int [] [] a = {{1,2} , {3,4,5}}

  int [] [] [] a = new int[2] [3 ][4 ]

  二维数组可以理解为数组的数组,三维数组可以理解为数组的数组的数组。

   具体代码:

  int[][] b ={{1 , 2 } , {3,4}} ;
  for(int i = 0 ; i < 2 ;i++)
  {
	for(int j = 0 ; j<2 ; j++)
	{
		System.out.println(b[i][j]);
	}
  }

字符串(String):

     由一个或者是多个字符组成。字符串也相当于一个char类型的数组,字符串用String表示。String是比较特殊的一个的一个类,虽然它可以使用定义基本数据类型的那种方式定义。但是它却是一个对象。在String类中定义很多的属性和方法,来对字符串的操作提供支持。java中提供了两个类,分别是String类和StringBuffer类。两个类中都提供了相应操作字符串的方法。

创建字符串的几种方式:

        String s = new String()  //我们说过String是一个对象,那么它就可以用对象的创建方式进行创建

        String s = new String("String")

        String s = "String"      //我们也可以使用基本数据类型的创建方式进行创建,所以它比较的特殊。由系统自动创建

        还有几种创建的方式,在此不再赘述,可以查看API哪里有好多构造方法,提供创建支持。
字符串的比较

       java中字符比较的几种方法:

       1. equals() : 比较两个字符串的内容是否相等,返回类型是Boolean 。

       2.equalsIgnoreCase() :忽略大小写,比较两个字符串的内容是否相等,返回类型也是Boolean。

       3.compareTo() :按字典的顺序比较字符串,返回类型为int。

        在比较字符串的时候不能使用“==”,对于“==”的方式,对于基本数据类型比较的是左右两边的值是否相等,如果值相同返回true,否则返回false。对于引用数据类型,虽然比较的也是值,即引用的地址的比较。虽然他们的内容或者是值是相等的但是他们的引用地址是不相等的,所以返回的是false。我们知道String是一个类,创建的字符串是一个对象,对于字符串的比较要使用equals方法。equals方法是定义在Object类中,String类重写了equals方法,下面是重写的具体源代码:

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String) anObject;
            int n = value.length;
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                            return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }

字符串的连接:

字符串的连接可以使用“+”进行连接,也可以使用concat()方法进行连接,字符串创建之后它的值变不可以改变,虽然我们可以使用+进行拼接,它是生成新的对象,而不是在原有的String对象上追加内容:

代码如下:

    String s = "Hello"+ "World"+3 ;
    String ss = "Hello" +"World"+2 ;
    String sss = ss.concat("java") ;

字符串的长度、分割字符串、复制字符串、更改字符串内容的方法

    length() : 用于获取字符串的长度,返回值是int 。 字符串一旦创建之后,它的长度便不能改变。

    split() : 按照传入括号后面的字符,将字符串分割为几个部分。

    copyValueOf() : 赋值数组的方法。

    replace(char1 , char2 ) : 把字符串中char1字符用char2 替换 。 

StringBuffer 类:

   String对象的长度是不可以改变,如果频繁的对字符串进行拼接操作,则会产生许多的对象。但是如果使用StringBuffer类则不会产生上面的问题。

    StringBuffer常用方法:

     length(): 放回字符串的长度。

     insert() : 在字符串的中间插入字符

     append():在字符串的末尾追加字符串

     setCharAt(int index , char ch ): 在制定位置插入字符

     toString(): 返回字符串。

String类和StringBuffer类的不同之处。

   String类:该类一旦创建了对象,它的内容和长度便不可以在改变。虽然可以进行字符串的拼接操作,也是新创建的对象,不是在原有对象的操作。

  StringBuffer类:该类具有缓冲的功能。对象创建之后,可以在原有对象上进行操作,不会创建新的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值