Java学习笔记(四) —— 基础知识

首先就是输入输出,之前看的那本书讲到输入输出时已经是两百多页了,,,果断换书。看的这本《Java面向对象程序设计》,目前自我感觉良好。

 

输入输出

输入时可以用Scanner来创建对象:

Scanner reader = new Scanner(System.in);

然后reader对象调用方法nextBoolean(),nextByte(),nextDouble(),nextInt(),nextFloat(),nextShort(),nextLong(),读取在命令行输入的各种基本类型数据。如:

int a=reader.nextInt(),b=reader.nextInt();

输出时System.out.println()和System.out.print()可以输出字符、表达式的值,区别在于前者输出时会自动输出一个换行,后者不会,允许使用并置符号“+”来连接前后。如:

int x=1;
System.out.println("x="+x);    //输出x=1

Java还有类似c语言的printf函数用来输出带有格式控制的数据,用法和c相同,特别的,Java的double类型使用“%f”,如:

System.out.printf("%d %f\n",a,b);

数组

Java的数组声明和c也差不多,有两种形式:

int[] a;
int a[];

特别的,Java不允许在方括号中指定元素个数,上面的语句只是声明一个数组a,并未分配内存。所以还须采用new创建,

int a[];
a=new int[10];
		
int a=new int[10];

上面是两种创建方法,这样一维数组就可以使用了,也可以在声明数组时初始化,如:

char ac[]= {'a','v'};

二维数组的使用同一维数组,只是多了一个方括号,特别的,二维数组相当于多个一维数组组成,这些一维数组长度不必相等,

int x[][] = new int[2][];
x[0]=new int[10];
x[1]=new int[5];
//或
int x[][]=new int[2][3];

Java还允许这样使用

int size=30;
int x[]=new int[size];

特别的,Java中数组属于引用类型,

x=y;	//这样会把x所指内存空间释放掉,使得x和y指向同一块内存空间,此时x[]={1,2},这时使用x或y实际上是一样的,改变其中一个,另一个也会改变。

遍历数组

一种是同c一样的

int y[]= {3,0,1};
for(int i = 0;i < y.length;i++) {
	System.out.println(y[i]);	//3,0,1
}

另一种是

int y[]= {3,0,1};
for(int i:y) {
	System.out.println(i);	//3,0,1
}

注意:i的类型应该和数组y的类型相同,而且下面这种写法是错误的,

int y[]= {3,0,1};
int i=0;    //错误
for(i:y) {
	System.out.println(i);
}

变量i必须重新声明,不能使用已有的变量。

clone()的使用

那么如何复制数组呢,可以使用循环来复制,也可以使用clone(),如:

char ac[]= {'a','v'};
char ax[]= {'b'};
ac=ax.clone();
System.out.println(ax);    //b
System.out.println(ac);    //b

length的使用

对于一维数组x[10],x.length=10,即一维数组的长度,对于二维数组x[2][3],x.length=2,即二维数组中一维数组的个数。

Arrays.toString()的使用

数组a[2]={1,2}; Array.toString(a)可以将整型转换为字符型,需import java.util.*,如:

int a[]= {1,2};
System.out.println(Arrays.toString(a));    //[1, 2]

copyOf()和copyOfRange()

int y[]= {1,2};
int z[]=Arrays.copyOf(y,3);	//z[]={1,2,0};
int z[]=Arrays.copyOf(y,1);	//z[]={1};
int y[]= {1,2};
int z[]=Arrays.copyOfRange(y,0,3);	//z[]={1,2,0};
int z[]=Arrays.copyOfRange(y,0,2);	//z[]={1,2};

其中,copyOf(y,newLength)为从y中0位置开始复制长度为newLength,若newLength的值大于原数组则填充默认值。

copyOfRange(y,from,to)为从y中from开始到to-1的位置,若to的值大于原数组则填充默认值。

Arrays.sort()

int y[]= {3,0,1};
Arrays.sort(y);	//y[]={0,1,3};

默认升序排序。

Arrays.binarySearch()

Arrays.binarySearch(double[] a,double number)可以查找参数number是否在指定数组中,其中a必须是已排好序的数组,若找到则返回位置,否则返回负数。

int y[]= {3,0,1};
Arrays.sort(y);	//y[]={0,1,3};
int index=Arrays.binarySearch(y,3);	//index=2

equals()

Arrays.equals()用来比较两个数组是否相等,返回逻辑值true或false,如:

int x[]= {5};
int y[]= {1,2};
System.out.println(Arrays.equals(x,y));    //false

猜你喜欢

转载自blog.csdn.net/hunt_er/article/details/81092846