Java学习之路0717(四)(数组、字符串)
2015-07-17 19:17
405 查看
数组、字符串
数组:用于存放一组相同字符类型的数据(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};
字符串
[b]String StringBuffer与StringBuilder的区别[/b]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); } }
相关文章推荐
- java动态代理
- Myeclipse如何自动创建hibernate
- java对象流的java.io.StreamCorruptedException问题
- mac安装java开发环境(jdk+eclipse+maven+svn)
- java基础简介
- 浅谈struts2的国际化----i18n
- java解析csv的方式
- Java中什么是接口回调
- Java判断素数方法
- java多线程
- java language specification官方地址
- eclipse创建android项目,无法正常预览布局文件
- java集合运算:求交集,并集,集合差
- 超级全的Java开发中的23种设计模式详解
- 在Struts2中使用ValueStack、ActionContext、ServletContext、request、session等 .
- maven项目转eclipse工程的命令:eclipse.bat
- java中各种属性调用的顺序
- 定时任务 Spring整合Quartz
- Java知识点解析
- java web 基础知识(一)之jre,jdk,jvm