JavaSE中个人查漏补缺总结day01

类型转换,JDK的一些新特性,Scanner的使用

import java.util.Scanner;

/* day05 类型转换 */
public class Day05 {
    public static void main(String[] args) {

		//数据类型扩展
        //二进制 0b 十进制 八进制0 十六进制0x

        //浮点数的扩展
        float a = 0.1f;
        double b = 1.0/10;
        System.out.println(a==b);
        //最好完全避免使用浮点数进行比较

        //字符扩展
        //所有的字符都可以转换为数字 Uincode编码
        char c = '\u0061';
        System.out.println(c);
        //转义字符
        // \t  制表符 \n 换行

        //字符串扩展
        String a1 = new String("hello");
        String a2 = new String("hello");
        System.out.println(a1==a2);
        String b1 = "hello";
        String b2 = "hello";
        System.out.println(b1==b2);
        //布尔值扩展
        Boolean flag = true;
        if (flag==true);
        if (flag);
        //低到高,自动转换,高到低,强制转换
        int i = 128;
        //此处因为超过byte的取值范围,因而计算错误
        byte a = (byte) i;//byte的取值范围为 -128-127
		long b = i;//低向高转换,无问题
        //操作比较大的数,注意溢出问题,JDK7的新特性,数字之间可以用下划线分割
		int count = 10_0000_0000;
		int res = count*10//计算结果超出int的范围,发生溢出
		long result = count*10;//结果仍然是错误的,原因为,count为int类型,计算结果溢出后赋值给long类型的变量
		long result = (long)count*10;//正确的操作
        //Scanner的使用,计算输入多少个数字,平均值
        Scanner scanner = new Scanner(System.in);
        int number = 0;
        double sum = 0;
        System.out.println("请录入数字:");
        while (scanner.hasNextDouble()){
            number++;
            sum+=scanner.nextDouble();
        }
        System.out.println("一共输入了"+number+"个数,和为:"+sum);
        //JDK5引入的新特性,增强for循环,遍历数组或集合的元素
        int[] numbers = {10,20,30,40,50};
        for (int x : numbers){
            System.out.println(x);
        }
    }
}

Java中方法的重载及可变长传参

/* 方法的重载 */
public class Day47 {
    public static void main(String[] args) {
        System.out.println(sum(4,5));
        System.out.println(sum(4.0,5.0));
        System.out.println(serach(1,10,51,75,135));
    }

    /*
    * 1.参数个数不同或者参数类型不同
    * 3.返回值类型可以相同也可以不相同
    * 4.方法名必须相同
    * */
    public static int sum(int a,int b){
        return a+b;
    }
    public static double sum(double a,double b){
        return a+b;
    }

    //可变长参数,一个方法中只能有一个可变长参数,并且可变长参数必须为方法的最后一个参数,数据类型必须一致
    //利用可变长参数寻找最大值
    public static int serach(int ...numbers){
         int sum = 0;
        for (int tmp:numbers){
            if (tmp>sum){
                sum=tmp;
            }
        }
        return sum;
    }
}

输出结果为

9
9.0
135
Process finished with exit code 0

递归的使用(尽可能的避免递归的使用,内存开销非常大)

/*递归调用,递归包含两部分,递归头和递归体,递归头:决定什么时候不调用自己,递归体:决定什么时候调用自己*/
public class Day50 {
    public static void main(String[] args) {
        //递归求解某个数的阶乘
        System.out.println(new Day50().f(5));
    }

    public static int f(int n){
        if (n==1){
            return 1;
        }else {
            return n*f(n-1);
        }
    }
    
}

递归的图解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值