JAVA一些小知识

1. 保留小数前几位输出

怎样限制float类型的位数,String类中format方法就可以帮我们解决这个问题第一个参数传入保留几位小数,第二个参数位置传入要进行保留位数的浮点数

System.out.printf(String.format(“%.3f”,num)); //保留小数点后3位

System.out.printf(%.3f,num) //保留小数点后3位

2. 输入Scanner

以整数类型为例的代码演示:

Scanner scan = new Scanner(System.in);
int a = scan.nextInt();

等价于

int a = new Scanner(System.in).nextInt(); //整数类型输入

仔细看看以上两个代码比较哟!
同理输入字符串:

Scanner scan = new Scanner(System.in);
String s = scan.nextLine();

String s = new Scanner(System.in).nextLine(); //此行代码等价于上两行代码

同上原理的是:
输入整数:int-nextInt(), 输入字符串:String-nextLine(),输入Float类型:float-nextFloat(),
输入double类型:double-nextDouble,byte-nextByte()输入short类型:short-nextShort(),输入long类型:long-nextLong(),
输入布尔类型:boolean-nextBoolean()等

输入字符:(三种方法)

  1. Scanner sc = new Scanner(System.in);
    char a = sc.next().charAt(0);(原理:next()函数返回输入中的下一个标记/字符作为字符串,并且charAt(0)函数返回该字符串中的第一个字符)
  2. import java.util.Scanner;
    Scanner scanner = new Scanner(System.in);
    char c = scanner.next().toCharArray()[0];
    这个用起来一般般,有些浪费资源,没有第一种简单
  3. import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    char c = (char)new BufferedReader(new InputStreamReader(System.in)).read();
    这样也可以输入,但是!这情况用于没有scanner包时使用,很麻烦,需要导入很多东西,不建议使用,
    综上所述,记住第一种方法

输入数组
第一种方法:(不限制输入数组的长度
System.out.println(“请输入几个数并用逗号隔开:”);
Scanner sc = new Scanner(System.in);
String str = sc.next().toString();
String[] arr = str.split(“,”);
int[] b = new int[arr.length];
for(int j = 0; j<b.length;j++) {
b[j] = Integer.parseInt(arr[j]);
System.out.println(b[j]+" ");
}

第二种方法:(限制输入的个数

System.out.println(“请输入三个数:”);
Scanner in = new Scanner(System.in);
int[] b=new int[3];
for(int i=0;i<b.length;i++){
b[i]=in.nextInt();
}

3. 分层结构

Dao:数据访问层,较底层,基础操作(增删改查)
Service:服务层/业务层,完成功能设计,项目的功能需求在此完成
Controller:控制器层,请求和响应控制功能,负责前后端交互
在这里插入图片描述

4. 字符转ASCII码

import java.util.*;

public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
char a = sc.next().charAt(0);
System.out.println(charToByteAscii(a));
}
public static byte charToByteAscii(char ch){
byte byteAscii = (byte)ch;
return byteAscii;
}
}

5. 四舍五入

将浮点数转换为整数类型,要求四舍五入
语法:
   Math.round(x);
  参数:
   x 为一数值。
  解释:
   方法。返回对参数x四舍五入后所得的整数近似值。

6. 获得二进制的高8位/低8位

char c = ‘好’;
int lowBit = c & 0xFF; //获得二进制的低8位
int highBit = (c & 0xFF) >> 8; //获得二进制的高8位

7. String类型转换成其他类型

如果将String类型转换成其他类型:

  1. 可使用采用parse()例如:parseInt()或parsefloat()这种方法,。
    parse()是SimpleDateFomat里面的方法,java.lang包下为每一个基本数据类型提供了相对应的包装类。该类中最常用的方法是parseXXX()方法,该方法可以将字符串转换成相应的基本数据类型,但是前提是字符串的形式必须是相应的数据类型 如果有两个参数:Integer.parseInt(s,16));//字符串s转16进制的int
    例如:
    //将字符串转换成Int型
    String s = “123”;
    int b = Integer.parseInt(s);
    System.out.println(b);
    //将字符串转换为Boolen
    String s2 = “true”;
    boolean flag = Boolean.parseBoolean(s2);
    System.out.println(flag);
    结果:123
    true
    如果将代码改为:
    //将字符串转换成Int型
    String s = “12.3”;//注意这里s内的12.3并非int型,而是Double型的
    int b = Integer.parseInt(s);
    System.out.println(b);
    此时程序将报错!
    而若改为:
    String s = “12.3”;
    double b = Double.parseDouble(s);//即将其转换为Double类型
    System.out.println(b);
    此时将正确执行并输出:12.3

例如:
parseFloat()方法用于返回与给定String表示形式相对应的float值,换句话说,我们可以说此方法用于将字符串值转换为float值。
parseFloat()方法是一个静态方法,也可以使用类名进行访问,如果尝试使用类对象访问该方法,那么也不会出错。
从字符串转换为float时, parseFloat()方法可能会引发NumberFormatException。
NumberFormatException:在此异常中,当string参数没有可解析的浮点数时。

  1. 仍然可以使用valueOf()
    例:
    double d = 12.34;//声明Double类型的变量d
    String s= String.valueOf(d);//将d转换我字符串String类型的s
    System.out.println(Double.valueOf(s).getClass());//Double.valueOf(s)将s再转为double,并输出其类型

  2. Integer.decode([String]):将String解码为Integer;

8. java中substring的用法

  1. substring(int beginIndex) 一个参数
    返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾
  2. substring(int beginIndex,int length) 两个参数
    返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始, length:表示子字符串的长度。
    参数:
    beginIndex - 开始处的索引(包括)。
    endindex 结尾处索引(不包括)。 左闭右开
    返回:
    指定的子字符串。
    eg:
public class Main {
    public static void main(String[] args) {
        String s = "unhappy";
        System.out.println(s.substring(3));
        System.out.println(s.substring(0,4));
    }
}

打印结果:
在这里插入图片描述

9. java中的indexOf方法

1、 indexOf(String str): 返回指定字符str在字符串中(方法调用者)第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回 -1。
2、indexOf(String str, int index): 返回从 index 位置开始查找指定字符str在字符串中第一次出现处的起始索引,如果此字符串中没有这样的字符,则返回 -1。
eg:

String s = "01234567890123456789";
System.out.println(s.indexOf("123"));
System.out.println(s.indexOf("123",5));

上面程序的结果为1和11

10. java字符大小写转换

  1. Java String toLowerCase()方法
    Java String toLowerCase()方法将字符串中的所有字符转换为小写字符,而非字母的字符不受影响。
    字符串 toLowerCase() 方法的语法为:string.toLowerCase(),其中toLowerCase()参数不带任何参数,toLowerCase()返回值返回一个字符串,其中所有大写字母都转换为小写字母
  2. Java String toUpperCase()方法
    toUpperCase() 则将字符串中的所有字符全部转换成大写,而非字母的字符不受影响
    在这里插入图片描述

11. java 进制转换程序

11.1 十六进制转换

  1. 转换为十进制:(3中方法)
    1) Integer.parseInt()方法:十六进制整数转换为对应的十进制整数,所占域宽为15;
String s = "ABCDEF";
int i = Integer.parseInt(s,16);
System.out.printf("%15d",i);   //备注:printf可以使用使用格式控制串“%md”输出域宽为m的十进制整数。

2)Integer.valueOf(“FFFF”,16).toString();  //valueOf()方法返回Integer类型,调用toString()返回字符串
3)Integer.toString(0xFFFF);  //该方法可直接传入表示十六进制数字的基本数据类型,方法返回字符串

使用以上3中方法需要注意去掉需要转换的数字的进制标志位
eg:

   //输入一个十六进制数a,和一个八进制数b,输出a,b的十进制
        String s = new Scanner(System.in).nextLine();
        String[] nums = s.split(" ");
        System.out.println(Integer.parseInt(nums[0],16));
        System.out.println(Integer.parseInt(nums[1],8));

结果出现NumberFormatException错误:
在这里插入图片描述
正确代码应为:

        Scanner in = new Scanner(System.in); 
        String str = in.nextLine(); 
        String []a = str.split("[ ]"); 
        int c = Integer.parseInt(a[0].substring(2,a[0].length()),16); 
        int d = Integer.parseInt(a[1].substring(1,a[1].length()),8); 
        System.out.println(c+"\n"+d); 

在这里插入图片描述

  1. 转换为八进制:转换之前的数据类型.toOctalString(i)
  2. 转换为二进制:转换之前的数据类型.toBinaryString(i)

11.2 十进制转换

  1. 转换为二进制:转换之前的数据类型.toBinaryString(i)
  2. 转换为八进制:转换之前的数据类型.toOctalString(i)
  3. 转换为十六进制:转换之前的数据类型.toHexString(i)
    eg:
 long i = 12345L;
    System.out.println(Long.toBinaryString(i));  //返回i的二进制的字符串表示
    System.out.println(Long.toOctalString(i));  //返回i的八进制的字符串表示
    System.out.println(Long.toHexString(i));  //返回i的十六进制的字符串表示

11.3 八进制转换

  1. 转换为二进制:转换之前的数据类型.toBinaryString(i)
  2. 转换为十进制:(同十六进制转十进制)
  3. 转换为十六进制:转换之前的数据类型.toHexString(i)

11.4 二进制转换

  1. 转换为十六进制:转换之前的数据类型.toHexString(i)
  2. 转换为十进制:(同十六进制转十进制)
  3. 转换为八进制:转换之前的数据类型.toOctalString(i)

对于二进制、八进制和十六进制之间的转换,可先转换为十进制,在用十进制转多进制的相应方法进行转换

12. 占位符的使用

在这里插入图片描述

13. 求整数的个位,十位,百位

int i = new Scanner(System.in).nextInt();
System.out.println(i%10);  //求个位
System.out.println((i/10)%10);  //求十位

14. 计算三角形周长和面积

海伦公式求面积:
p = (a + b + c)/2
s = sqrt(p*(p-a)(p-b)(p-c))

double p,cir,area;
cir = (double)(b+c+d);   //周长
p = cir/2;
area = Math.sqrt(p*(p-d)*(p-b)*(p-c));   //面积

15. 判断是否为质数

质数:除了1和它本身外,不能被其他的数整除的数。
思想:质数不能被2整除,也不能被(2,质数本身)这个范围内的任意整数整除,所以可以利用循环:

下列输入一个整数,通过返回true或者false判断是否是质数

public class Main {
public static void main(String[] args) {
Main main = new Main();
Scanner scan = new Scanner(System.in);
int number = scan.nextInt();
System.out.println(main.isPrimeNumber(number));
}

public Boolean isPrimeNumber(int number) {

int i = 2;
for(;number%i!=0;i++);
return i==number ? true : false;

}
}

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值