您的位置:首页 > 编程语言 > Java开发

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: