1.== 和equals的区别
(1)基本数据类型比较(byte,short,char,int,long,float,double,boolean)
equals和==没有区别
(2)复合数据类型比较
equals比较的是值,而==比较的是地址
String s1 = "abc";
String s2 = new String(s1);
System.out.println((s1==s2));//false 因为new的时候创建新的空间,地址就不一样了
System.out.println((s1.equals(s2)));//true
2.fork()函数
fork函数总是“调用一次,返回两次”,在父进程中调用一次,在父进程和子进程中各返回一次,所以下面程序应调用3次,输出8次hello
下面的程序执行输出几个hello?
#include<stdio.h>
#include <unistd.h>
int main( ) {
fork( );
fork( );
fork( );
printf(“hello\\n”);//8
return 0;
}
3.输入方法Scanner类
那种网上的在线编程题要求一般都是要求输入什么,然后输出对应的结果,这个时候就用到了Scanner
输入一个字符串:
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
而没有输入一个字符的方法,所以需要变化一下
Scanner sc = new Scanner(System.in);
String s = sc.next();
char c = s.charAt(0);
而上例只能输入一次,要想多次测试用例应改为如下:
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String s = sc.next();
char c = s.charAt(0);
}
4.字符、字符串问题
做了几道关于字符串操作的题目,发现如下几个方法特别有用
//indexOf(String s):返回s在字符串中第一次出现的位置
//lastIndexOf(String s):与上一个相反,返回s在字符串最后一次出现的位置
//length():字符串长度
//charAt(int index):返回字符串中特定位置的字符
通过这几个就可以解决很多问题,例如
1.计算字符串最后一个单词的长度,单词以空格隔开。
2.写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int m=0;
Scanner sc1 = new Scanner(System.in);
String line1 = sc1.nextLine().toLowerCase();
String s = sc1.next().toLowerCase();
char c = s.charAt(0);
for(int i=0;i<line1.length();i++){
if(line1.charAt(i)==c){
m++;
}
}
System.out.print(m);
}
}
随着又做了一些题目,发现这几个知识点也很常用:
1.String与char[]数组相互的转化
//String转化为char[]数组,java有已经实现的方法
String s = "";
char[] c = s.toCharArray();
//char[]数组转化为String
char[] c = new char[10];
String str = String.valueOf(c);
2.字符与ASCII码的转化
因为可能要求对输入的字符串进行大小写以及其他字符筛选、排序等问题,需要用到ASCII码
//字符转ASCII码,int型b就是ASCII码
char a='a';
int b = a;
System.out.print(b);
//ASCII码转字符,b是转化后的字符
int a = 97;
char b = (char) a;
System.out.print(b);
3.截取字符串方法:substring()
有的时候需要对整个字符串中的一部分进行操作,这个时候需要用到substring方法截取字符串。2种用法:
1.public String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
2.public String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
4.字符串分隔方法split()
在java.lang包中有String.split()方法,返回是一个数组,演示一个简单的例子:
String s = sc.nextLine();
//spilt用于分隔字符串,本例用于分隔空格,例如 a bc,就被分成"a","bc",
String[] s1 = s.split(" ");
5.进制转化
//输入16进制字符串,输出10进制int型数
String s = "7890abcd";
int i = Integer.parseInt(s, 16);
//输入16进制字符串0xA,输出10进制字符串,把前两个字符截掉留后面的
String s = "0xA;
String s1 =Integer.toString(Integer.parseInt(s.substring(2), 16));
System.out.println(s1);