直接初始化数组: new创建的数组会得到默认的0值; int[] scores = {87,98,69,54,65,76,87,99}; 直接用大括号给出数组的所有元素的初始值; 不需要给出数组的大小,编译器替你数数。
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] scores = {87,98,69,54,65,76,87,99};
System.out.println(scores.length);
for(int i = 0;i<scores.length;i++)
{
System.out.print(scores[i]+" ");
}
}
}
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
int[] a1 = {1,2,3,4,5};
int[] a2 = a1;
for(int i=0;i<a2.length;++i)
{
a2[i]++;
}
for(int i=0;i<a1.length;++i)
{
System.out.println(a1[i]);
}
}
}
数组变量: 数组变量是数组的管理者而非数组本身; 数组必须创建出来然后交给数组变量来管理; 数组变量之间的赋值是管理权限的赋予; 数组变量之间的比较是判断是否管理同一个数组。
public class Hello {
public static void main(String[] args) {
int[] a = {1,2,3,4,5};
int[] b = {2,3,4,5,6};
System.out.println(a==b);
}
}
如果此处int[] b = {1,2,3,4,5}; 结果仍为false。因为a和b管理着两个不同的数组,这两个数组是不同的。 如果此处int[] b = a; 则结果为true。
复制数组: 必须遍历源数组将每个元素逐一拷贝给目的数组。
遍历数组: 通常都是使用for循环,让循环变量i从0到<数组的length,这样循环体内最大的 i 正好是数组最大的有效下标。 常见错误: 循环结束条件是<=数组长度; 离开循环后,继续用 i 的值来做数组元素的下标。
for-each循环
for(int k :data)
{}
for(<类型><变量>:<数组>)
{...}
对于数组data中的每一个元素,循环的每一轮拿出来作为一个k。 该循环不能拿来给数组赋值。k和数组的元素间只是值的对应关系,而不是存储位置上的对应关系。
平方根:Math.sqrt()
构造素数表: 欲构造n以内的素数表 1.令x为2; 2.将2x,3x,4x直至ax<n的数标记为非素数; 3.令x为下一个没有被标记为非素数的数,重复2;直到所有的数都已经尝试完毕。 欲构造n以内的素数表 1.创建prime为boolean[n],初始化其所有元素为true,prime[x]为true表示x是素数; 2.令x=2; 3.如果x是素数,则对于(i=2;xi<n;i++),令prime[ix]=false; 4.令x++,如果x<n,重复3,否则结束。
public class Hello {
public static void main(String[] args) {
boolean[] isPrime = new boolean[100];
for(int i=2;i<isPrime.length;i++)
{
isPrime[i]=true;
}
for(int i=2;i< isPrime.length;i++)
{
if(isPrime[i])
{
for(int k=2;i*k< isPrime.length;k++)
{
isPrime[i*k]=false;
}
}
for(i=0;i< isPrime.length;i++)
{
if(isPrime[i])
{
System.out.print(i+" ");
}
}
System.out.println();
}
}
}
二维数组
int[][] a = new int[3][5];
for(i=0;i<3;i++)
{
for(int j=0;j<5;j++)
{
a[i][j]=i*j;
}
}
a[i][j]是一个int;
表示第i行第j列上的单元;
a[i,j]并不存在。
int[][] a={
{1,2,3,4},
{1,2,3},
};
编译器来数数;
每行一个{},逗号分隔;
最后的逗号可以存在,有古老的传统;
如果省略,表示补零。
字符类型 单个的字符是一种特殊的类型:char: 用单引号表示的字符字面量:‘a’,‘1’; Java使用Unicode来表示字符,可以表达包括汉字在内的多种文字。
public class Hello {
public static void main(String[] args) {
char a = 'A';
a++;
System.out.println(a);
}
}
如果此处是汉字的加一,则结果为Unicode表中后一个的字。
public class Hello {
public static void main(String[] args) {
char a = 'A';
char b = 'D';
System.out.println(b-a);
}
}
A和D字母之间的距离为3。
public class Hello {
public static void main(String[] args) {
char a = '\u0041';
System.out.println(a);
}
}
大小写转换: 字母和数字在Unicode表中是顺序排列的。 ‘0’,‘1’ … ‘9’ 大写字母和小写字母是分开排列的,并不在一起。
public class Hello {
public static void main(String[] args) {
char a = 'A';
char b = (char)(a+'a'-'A');
System.out.println(b);
}
}
字符大小: 字符可以被比较大小,依据是它们在Unicode表中的编号。
逃逸字符: 用来表达无法印出来的控制字符或特殊字符,它右一个反斜杠“\”开头,后面跟上另一个字符,这两个字符合起来,组成了一个字符。
public class Hello {
public static void main(String[] args) {
System.out.println("abc\bd");
}
}
制表位 每行的固定位置; 一个\t使得输出从下一个制表位开始; 用\t才能使得上下两行对齐。
public class Hello {
public static void main(String[] args) {
System.out.println("abc\t123");
System.out.println("a\t123");
}
}
包裹类型的用处: 获得该类型的最大最小值 Integer.MIN_VALUE Integer.MAX_VALUE 当需要让一个类或对象做事情的时候,用**.** 运算符。 a.length Integer.MAX_VALUE
Character.isDigit(‘1’) //判断是否为数字,若是则为true,反之则为false。 Character.toLowerCase(‘I’)//将 ‘I’ 转换为小写的 ‘i’ 。
|