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

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);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值