本周学习: (1)for-each:
在循环体执行的过程中,每循环一次,会将 languages 数组中的一个元素赋值给 lang 变量,直到遍历 languages 数组中所有元素,循环终止。
(2)一些函数:
比较两字符串是否相同:System.out.print(s.equals("abc"));
比较两字符串大小:System.out.print(s1.compareTo(s2));
计算数组长度: System.out.print(name.length());这里注意的是数组里的没(),这里有
访问字符串中的字符:charAt
String s="abc";
for(int i=0;i<s.length();i++)
System.out.print(s.charAt(i));从0开始,和数组相似;
得到子串:substring(n)(和数组相似)
从n号到末尾的内容
substring(a,b)
从a到b的内容(a开始,b的前一个数字结束)
这里的位置和数组相似;
s.indexOf(c)
得到c字符的位置,-1表示不存在;
s.indexOf(c,n)
表示从n号位开始寻找c字符
s.indexOf("abc");
找到字符串abc的位置上(输入a所在的位置)
s.starsWith(t)
这个字符串是不是以另一个字符串开头的
s.endWith(t)
这个字符串是不是以另一个字符串结尾的
以下函数都不会改变原字符串,会创造一个新字符
例如:
String s1="abc";
String s2=s1.toUpperCase();
s.trim()
把字符串两端的空格给删掉
s.replace(c1,c2)
把这个字符串中所有的c1都换成c2
s.toLowerCase()
把整个字符串中所有字母都变成小写字母
s.toUpperCase()
把整个字符串中所有字母都变成大写字母
(3)查素数的技巧:(其中第四,第五种不常见,但十分好用,可以看看。)
判断素数当n很大时,如何缩短运行时间:
(1)查一半:
例如for(int i=2;i<n/2+1;i++)
(2)将偶数剔除:
例如for(int i=3;i<n;i+=2)
(3)运用数学方法:
例如for(int i=3;i<Math.sqrt(x);i+=2)
(4)根据该素数之前的素数来循环:
例如
int cnt=1;
int[] primes = new int[50];
primes[0]=2;
MAIN_LOOP:
for(int i=3;cnt<primes.length;i++){
for(int k=0;k<cnt;k++){
if(i%primes[k]==0)
continue MAIN_LOOP;
}
primes[cnt++]=i;
}
(5)boolean型:
boolean[] primes = new boolean[100];
for(int i=2;i<primes.length;i++)
primes[i] = true;
for(int j=2;j<primes.length;j++)
{
if(primes[j])
{
for(int k=2;j*k<primes.length;k++)
{
primes[j*k]=false;
}
}
}
这里要注意的是2也是素数,希望大家不要忘了
(4)强制转化:
char c = 'A';
System.out.print((int)c);
'A'也可以这样表示
char c=65;
(5)比较字符大小:
比较字符的大小:
System.out.print('c'>'a');
输出的会是true(这点应该比C语言简单点)