Java学习之路0717(四)(数组、字符串)

数组、字符串

数组:用于存放一组相同字符类型的数据(Java中的数组下标示从0开始,甚至月份是从0到11月)

数组使用的步骤:(整型数组中的元素初始值为0)
1、声明数组;(数据类型 []变量名称)
int arry[];,
int []arry;,
String []arry;,

注意:

数组的声明问题:int[] a,b,c[];a,b均为一位数组,而 c为个二位数组
2、分配空间;数组元素类型 数组名称[]=new 数组元素类型[数组元素个数];
int arry[]=new inrt[10];
3、赋初值;
int ayy[]=new int[]{1,2,3,};
int arry[]={1,2,4};
利用循环逐个赋值;
4、处理数据
( 二维数组的声明:数组名称可以写两个[]中间,前面,后面)
(二位数组的分配空间:
1、int arry[][]={{1,2,3,4},{1,,4,5,6},{1,2,4},{2,3,5};
2、int arry[][]=new int[3][];
arry[0]=new int[]{1,2,3};
arry[1]=new int[]{1,2,3};
arry[2]=new int[]{1,2,3};

字符串
String StringBuffer与StringBuilder的区别

String的长度不可修改
StringBuffer与StringBuilder的空间长度默认为16个字符,
String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)
简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String
数组的使用

利用数组解决生兔子问题
package jie0717;
/*
 * 利用数组解决生兔子问题
 */
public class Test6 {
    public static void main(String[] args) {
        int arry[]=new int[20];
        arry[0]=1;
        arry[1]=2;
        arry[2]=3;
        int arry2[]={1,2,3};
        for(int i=3;i<20;i++){
            arry[i]=arry[i-3]+arry[i-1];
        }
        System.out.println("20个月后兔子的对数:"+arry[19]);
    }
}

利用二维数组计算一个学生的平均分

package jie0717;
/*
 * 利用数组计算一个学生的平均分。
 */
import java.util.*;
public class Test7 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int arry[]=new int[5];
        float sum=0;
        System.out.println("请输入该学生的各科成绩:");
        for(int i=0;i<5;i++){
            arry[i]=scanner.nextInt();
            sum+=arry[i];
        }
        System.out.println("平均值为:"+sum/arry.length);
    }
}

数组的排序问题(冒泡排序)

package jie0717;
/*
 * 冒泡排序法
 */
import java.util.*;
//import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;
public class Test8 {
    public static void main(String[] args) {
        int temp=0;
        int[] score=new int[]{2,5,7,8,1};
        int[] score1=new int[]{2,5,7,8,1,9,3,};
        for(int i=0;i<score.length;i++){
            for(int j=0;j<score.length-i-1;j++){
                if(score[j]>score[j+1]){
                    temp=score[j+1];
                    score[j+1]=score[j];
                    score[j]=temp;
                }   
            }
        }
        for(int i=0;i<score.length;i++){
            System.out.print(score[i]+" ");
        }
    }
}

Java中有java.util.Arrays;
Arrays.sort(数组名称);
利用分装好的类进行使用赋值
字符串1=Arrays.copyOf(字符串2,要复制的元素个数)

package jie0717;
/*
 * 将一个字符串的元素复制到一个字符串
 */
import java.util.Arrays;
public class Test1 {
    public static void main(String[] args) {
        int score[]=new int[]{15,154,53,1653,656,66,145};
        int score1[]=new int[5];
        score1=Arrays.copyOf(score,5);
        for(int i=0;i<score1.length;i++){
            System.out.print(score1[i]+" ");
        }
    }

}

字符串中字符的大小写切换
s.charAt(i)将s中的第i个字符取出
Character.isLowerCase(c)判断字符c是否为小写
Character.toUpperCase(c)将c改为大写
Character.toLowerCase(c)将c改为小写

package jie0717;
/*
 * 字符的大小写切换以及多维数组的输出
 */
public class Test2 {
    public static void main(String[] args) {
        int []arry[]=new int[3][];
        arry[0]=new int[]{22,33,44,66};
        arry[1]=new int[]{2,3,4,5};
        arry[2]=new int[]{66,55,77};
        String s=new String("fjkjikKDJFKDJjkgjdjlg");
        String ns=new String();
        for(int i=0;i<s.length();i++){  
            char c=s.charAt(i);
            if(c>='a'&&c<='z'){
                c=(char) (c-32);
            }
            else{
                c=(char) (c+32);
            }
            ns+=c;
        }
        System.out.println("第1种   "+ns);
        ns=new String("");
        for(int i=0;i<s.length();i++){
            char c=s.charAt(i);
            if(Character.isLowerCase(c)){
                c=Character.toUpperCase(c);
            }
            else{
                c=Character.toLowerCase(c);
            }
            ns=ns.concat(""+c);
        }
        System.out.println("第2种   "+ns);
        for(int i=0;i<arry.length;i++){
            for(int j=0;j<arry[i].length;j++){
                System.out.print(arry[i][j]+" ");
            }
            System.out.print("\n");
        }
    }
}

输出一个字符串,判断是否是一个邮箱地址

package jie0717;
/*
 * 输出一个字符串,判断是否是一个邮箱地址
 */
import java.util.Scanner;
public class Test3 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String s=new String(scanner.nextLine());
        boolean ismail=false;
        boolean isLetterOrNumberOr_=true;
        if(s.contains("@")){//1判断是否含有@
            if(s.indexOf('@')==s.lastIndexOf('@')){//判断是否只有一个@符号
                String mailStart=s.substring(0, s.indexOf('@'));
                //boolean isLetterOrNumberOr_=true;
                for(int i=0;i<s.indexOf('@');i++){
                    char c=s.charAt(i);
                    if(!(Character.isLetter(c)||Character.isDigit(c)||(c=='_'))){
                        isLetterOrNumberOr_=false;
                        break;
                    }
                }
                if(isLetterOrNumberOr_){
                    if(s.endsWith(".com")||s.endsWith(".net")||s.endsWith(".cn")){
                        String mailMaddil=new String(s.substring(s.indexOf('@')+1,s.indexOf('.')));
                        boolean isLetterOrNumberOr=true;
                        for(int i=s.indexOf('@')+1;i<s.indexOf('.');i++){
                            char c=s.charAt(i);
                            if(!(Character.isLetter(c)||Character.isDigit(c)||(c=='_'))){
                                isLetterOrNumberOr_=false;
                                break;
                            }
                        }
                        ismail=isLetterOrNumberOr_;
                    }
                }
            }
        }
        if(ismail){
            System.out.println("邮箱格式正确");
        }
        else{
            System.out.println("邮箱格式错误");
        }
    }
}

输入一串数字,每三个数字用“,”将其隔开

package jie0717;
/*
 * 输入一串数字,每三个数字用“,”将其隔开
 */
public class Test4 {
    public static void main(String[] args) {
        StringBuffer buffer1=new StringBuffer("123456789");
        StringBuffer buffer2=new StringBuffer("123456789");
        for(int i=3;i<buffer1.length()-1;i+=4){//从左到右加逗号隔开
            buffer1.insert(i, ',');
        }
        System.out.println("第一个buffer:"+buffer1);
        for(int i=buffer2.length()-3;i>0;i-=3){//从右到左用逗号隔开
            buffer2.insert(i, ',');
        }
        System.out.println("第二个buffer:"+buffer2);
    }
}

随机产生10个两位正整数,并从小到大顺序排放

package jie0717;
/*
 * 随机产生10个两位正整数,并从小到大顺序排放
 */
import java.util.Random;
public class Test5 {
    public static void main(String[] args) {
        int a[]=new int[10];
        Random random=new Random();
        for(int i=0;i<10;i++){
            a[i]=random.nextInt(90)+10;
//          if(a[i]<9){
//              a[i]=random.nextInt(100);
//              i--;
//          }
        }
        System.out.println("排序前的顺序:");
        for(int i=0;i<10;i++){
            System.out.print(a[i]+" ");
        }
        System.out.println();
        int temp=0;
        for(int i=0;i<10;i++){
            for(int j=0;j<10-i-1;j++){
                if(a[j]>a[j+1]){
                    temp=a[j+1];
                    a[j+1]=a[j];
                    a[j]=temp;
                }
            }
        }
        System.out.println("排序后的顺序:");
        for(int i=0;i<10;i++){
            System.out.print(a[i]+" ");
        }

    }
}

==与equals的区别:
==是指存储的值得地址相等,equals是指存储的值相等
这里写图片描述
这里写图片描述

package jie0717;

public class Test9 {
    public static void main(String[] args) {
        String s1="abc";                 //s2与s1是常量
        String s2="abc";
        String s3=new String("abc");
        String s4=new String("abc");
        if(s1==s1){//判断为true
            System.out.println("s1==s2");
        }
        if(s1.equals(s2)){//判断为true         System.out.println("s1 equals s2");
        }
        if(s3==s4){//判断为false
            System.out.println("s3==s4");
        }
        if(s3.equals(s4)){//判断为true
        System.out.println("s3 equals s4");
        }
        if(s1==s3){//判断为false
            System.out.println("s1==s3");
        }
        if(s1.equals(s3)){//判断为true
            System.out.println("s1 equals s3");
        }
    }
}

求以nxn的实数矩阵的对角线的乘积

package jie0717;
/*
 * 求以nxn的实数矩阵的对角线的乘积
 */
import java.util.Random;
import java.util.Scanner;
public class Test10 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入行列式矩阵的行数:");
        int max=scanner.nextInt();
        //int max=4;
        int arry[][]=new int[max][max];
        Random random=new Random();
        for(int i=0;i<max;i++){
            for(int j=0;j<max;j++){
                arry[i][j]=random.nextInt(9)+1;
            }
        }
        System.out.println(max+"x"+max+"的行列式为:");
        for(int i=0;i<max;i++){
            for(int j=0;j<max;j++){
                System.out.print(arry[i][j]+" ");
            }
            System.out.println();
        }
        int sum=1;
        for(int i=0;i<max;i++){
            sum*=arry[i][i];
        }
        System.out.println("主对角线的乘积:"+sum);
        int sum1=1;
        for(int i=0;i<max;i++){
            sum1*=arry[i][max-i-1];
        }
        System.out.println("主对角线的乘积:"+sum1);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值