【Java】我做笔试题遇到的问题(一)

来源:互联网 发布:南大碎尸 知乎 编辑:程序博客网 时间:2024/05/21 07:55

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[]数组转化为Stringchar[] 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);
1 0
原创粉丝点击