来自初学者收集总结的一些Java算法中值得注意的地方

一、Java字符串大小写转换的方法

Java字符串大小写转化有两种方法,其中一种是比较直接的通过字符的ASCII码的加减来实现字符大小写的转换;另外一种是利用Java特定的方法str.toUpperCase()和str.toLowerCase()来实现字符串的大小写转换。
第一种方法:

 public static void main(String[]args){
    char[] array = src.toCharArray();
    int temp = 0;
    for (int i = 0; i < array.length; i++){
       temp = (int) array[i];
       if (temp <= 90 && temp >= 65){ // array[i]为大写字母
          array[i] = (char) (temp + 32);
       } else if (temp <= 122 && temp >= 97){ // array[i]为小写字母
          array[i] = (char) (temp - 32);
         }
   }
 }

第二种方法:

 public static void main(String[]args){
    char[] array = src.toCharArray();
    int temp = 0;
    for (int i = 0; i < array.length; i++){
       temp = (int) array[i];
       if (temp <= 90 && temp >= 65){ // array[i]为大写字母
          array[i] = (char) (temp + 32);
       } else if (temp <= 122 && temp >= 97){ // array[i]为小写字母
          array[i] = (char) (temp - 32);
         }
   }
 }

二、String s = input.nextLine();和String s = input.next();的区别

简单来说,input.nextLine()是以回车为分隔符,一次取一行;而使用input.next()是以回车或空格为分隔符,一次取一个单词,当读取到空格时就会停下不再读取了。所以使用input.next()不能读取有空格的字符串。

例如以下的代码:

import java.util.Scanner;

public class ScannerString {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
 
        System.out.println("请输入字符串(nextLine()):");
        String a = input.nextLine();
        System.out.println(a);
        
        System.out.println("请输入字符串(next()):");
        String b = input.next();
        System.out.println(b);

程序运行后,我们可以清楚的看到这两者的区别:
在这里插入图片描述

三、Java mathes用法

matches() 方法用于检测字符串是否匹配给定的正则表达式。即输出只为true或者false;
例如以下代码:

public class Test {
    public static void main(String args[]) {
        String Str = new String("www.runoob.com");

        System.out.print("返回值 :" );
        System.out.println(Str.matches("(.*)runoob(.*)"));
        
        System.out.print("返回值 :" );
        System.out.println(Str.matches("(.*)google(.*)"));

        System.out.print("返回值 :" );
        System.out.println(Str.matches("www(.*)"));
    }
}

以上程序的输出结果为:
在这里插入图片描述

四、Java String.split()用法

Java中String.split()方法,与数组结合在一起使用,返回结果也是一个数组。该方法根据匹配给定的正则表达式来拆分字符串。
使用时要注意:
1.如果用“-”或者“/”作为分隔的话,则使用String.split("-")或者String.split("/")便可以实现将字符串分开;

如以下代码:

public class split {
    public static void main(String args[]) {
        String a="浙江-温州-苍南";
        for (String b: a.split("-")){
            System.out.println(b);
        }
    }
}

以上程序的输出结果为:
在这里插入图片描述

2、如果用“.”或者“^”或者“|”或者“*”或者“:”或者“\”等作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split(".")。是因为这些字符都是转义字符,必须得加"\\”;

如以下的代码:

public class split {
    public static void main(String[] args) {
        String a="浙江.温州.苍南";
        for (String retval: a.split("\\.")){
            System.out.println(retval);
        }
    }
}

以上程序的运行结果也为:
在这里插入图片描述

3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,如字符串有“@”和“#”分隔符时,要使用String.split("@|#");但是当其中的分隔符也有第2点说的转义字符时,则他们前面也需要加上“\\”;

例如以下的代码:

public class split {
    public static void main(String[] args) {
        String a="浙江@温州#苍南.灵溪";
        for (String retval: a.split("@|#|\\.")){
            System.out.println(retval);
        }
    }
}

以上代码的运行结果为:
在这里插入图片描述

五、Java进制转换用到的方法

Java进制转换可以选择根据进制转换的步骤然后用代码一步一步实现,也可以使用Java自带的代码语句直接实现进制转换。这里重点介绍Java关于进制转换的代码语句:
首先定义n1:
int n1 = 14;

十进制转bai成十六进制:

Integer.toHexString(n1);
十进制转成八进制:

Integer.toOctalString(n1);

十进制转成二进制:

Integer.toBinaryString(12);

十六进制转成十进制:

Integer.valueOf(“FFFF”,16).toString();

十六进制转成二进制:

Integer.toBinaryString(Integer.valueOf(“FFFF”,16));

十六进制转成八进制:

Integer.toOctalString(Integer.valueOf(“FFFF”,16));

八进制转成十进制:

Integer.valueOf(“576”,8).toString();

八进制转成二进制:

Integer.toBinaryString(Integer.valueOf(“23”,8));

八进制转成十六进制:

Integer.toHexString(Integer.valueOf(“23”,8));

二进制转十进制:

Integer.valueOf(“0101”,2).toString();

二进制转八进制:

Integer.toOctalString(Integer.parseInt(“0101”, 2));

二进制转十六进制:

Integer.toHexString(Integer.parseInt(“0101”, 2));

六、Java substring() 方法

substring()方法是String类的一个方法,故该方法的调用者为String类的对象,即字符串。
str.substring(a,b)功能为:截取方法调用者(即str)的从a到b(包括a,不包括b;即含头不含尾、或[a,b)区间内的子字符串)。
如以下程序:

public class substring {
    public static void main(String[] args) {
        String str = "0123456789";
        System.out.println(str.substring(1, 3));
    }
}

以上程序的运行结果为:
在这里插入图片描述

七、Java根据字节码判断是否为汉字的方法

1、判断一个字符是否是中文的方法:

public static boolean isChinese(char c) {
     return c >= 0x4E00 && c <= 0x9FA5;
}

2、判断一个字符串是否含有中文的方法:

public static boolean isChinese(String str) {
   if (str == null) return false;
   for (char c : str.toCharArray()) {
     if (isChinese(c)) return true;// 有一个中文字符就返回
   }
return false;
}

点赞

八、Java HashMap 的用法

首先,Java中使用HashMap需要引入两个头文件:
import java.util.HashMap;
import java.util.Map;
其次,HashMap的用法总结来说就是:

1.导入:import java.util.HashMap;

2.定义map:HashMap<K, V> map=new HashMap<K, V>(); //K和V是类,比如int 、String、double;

3.清空:void clear();

4.设置K键的值为:Vput(K,V);

5.获取K键的值:V get(K);

6.判空:boolean isEmpty();

7.获取map的大小:int size();

8.删除K键的值:V remove(K); //返回的是V,可以不接收

9.判断是否有K键的值:boolean containsKey(K);

10.判断是否有值是V:boolean containsValue(V);

例如以下代码:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class HashMap {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        Map<String,Integer>a=new HashMap<String,Integer>();
        a.put("zero",0);
        a.put("one",1);
        a.put("two",2);
        a.put("three",3);
        a.put("four",4);
        a.put("five",5);
        a.put("six",6);
        a.put("seven",7);
        a.put("eight",8);
        a.put("nine",9);
        String s=input.nextLine();
            if (s.equals("zero + zero =")) {
                break;
            }
            int sum=0;
            String[]s2=s.split(" ");
            for(int i=0;i<s2.length;i++){
                if (a.containsKey(s2[i]) && !a.containsKey(s2[i+1])) {//map中的containsKey(Key)方法是判断该key在map中是否有key存在。
                    sum+=a.get(s2[i]);
                }
                else if (a.containsKey(s2[i]) && a.containsKey(s2[i+1])){
                    sum+=a.get(s2[i])*10;
                }
            }
            System.out.println(sum);
   }
}

利用以上程序便可以实现英文字母的加法了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值