美文网首页大数据学习
2020-07-24 Java基础学习002

2020-07-24 Java基础学习002

作者: ryankm | 来源:发表于2020-07-25 06:07 被阅读0次

内容提前看

  1. 数据类型与存储
  2. final关键字
  3. 代码实现十进制转二进制

一、数据类型与存储

  • 标识符的特殊字符只能有:$与_

  • 命名规则

    • 类:大驼峰法 HelloWorld StringUtils DaTeUtil DataConvert
    • 方法和变量:小驼峰 getData queryByTagName productID
    • 常量:一个单词时,全大写 final MAX_COUNT CIRCLE_PI
    • 包名:域名倒写 com.jd.common.utils com.alibaba.shop.data.po
  • 常量: 两类

    • 字面值常量:各类数值
    • 自定义常量:
  • 数据存储方式:进制:

    • 无符号: 0-255 可以表示256个数,Java中是没有无符号位的,都是有符号的,如果遇到类似C#中的有符号位时只能扩容,使用short增加取值范
    • 有符号:第一位是符号位 byte,取值-128至127(-128即-0的另一个表示)

    进制之间快捷转换:128-64-32-16-8-4-2-1法


    8 4 2 1法

十转八:先转二进制,再分每3个一位,范围是0-7

60——>0 0 1 1 1 1 0 0——>111(7) 100(4)——>74

十转十六:先转二,再每4个一位 0011(3)1100(C)——>3C

(十六进制是0-9 A-F:1100即8+4=12 对应就是C)

  • 数据类型:

    • 引用类型:数组 接口 类

    • 基本类型:

      • 整数类型:byte(1字节-127-127) short(2个字节-32768-32767) int(4个字节) long(8个字节,时间毫秒值)
      • 浮点类型:float(4个字节) double(8个字节)
      • 布尔类型:boolean(1个字节)
      • 字符类型:char(2个字节)

      小扩展

      float与double区别:

      1. 表示方法不同:float值必须最后加f

        float val1 = 0.0087631f; double val2 = 0.388387328734;

      2. float小数位最多只能到8位有效数字(整数加小数最多8位,不够的小数直接取整,超过用指数表示),double可以表示的有效数字16位

      3. 取值范围:float:-3.40E+38~3.40E+38 double:-1.79E+308~1.79E+308

      4. 占字节不同,float四个字节,double八个字节

              float val1 = 3832974.3473297432f;
              float val3 = 13832974.3473297432f; 
              //加一位后1.3832974E7 直接把小数点舍弃并用指数表示
              double val2 = 3832974.3473297432;
              System.out.println("float:" + val1);
              System.out.println("float(加长一位):" + val3);
              System.out.println("double:" + val2);
      
      

      执行结果:

      float:3832974.2
      float(加长一位):1.3832974E7
      double:3832974.347329743


二、引申知识:final关键字

final关键字:

​ 用来限制变量(包括本地变量、成员变量、方法、类。

​ 规则:一旦使用了final后,你必须紧接着给它做初始化,当初始化后就不可以再次初始化或改变的的值或引用。

final的基本用法

  1. 限定变量:定义时初始化后值不可再更改

  2. 限定方法:

    方法前加final,表示此方法已被终结,不能再进行重写,我认为此方法已经够用了,它就变成了静态绑定,在运行时就不需要再重新动态进行绑定了,理论上应该更快一些

    public class MethodFinalDemo{
        public final void show(){
            System.out.print("我不需要重写!");
        }
    }
    
    //当你试图在子类中去重写时,编译就会报错
    public class SubMethodFinal extends MethodFinalDemo{
        @override
        public void show(){
            //……
        }
    }
    
  3. 限定类:限定类时代表此类已经被阉割,不能再进行包装或扩展了,JDK类库最常用的方式


三、十转二进制

package com.xyto.Basicdemo;

import java.util.Scanner;

public class TestFinalDemo {

    public static void main(String[] args) {
        double d = 0.0;
        System.out.println("请输入你要转换的数字:");
        Scanner scan = new Scanner(System.in);
        d = scan.nextDouble();
        System.out.println("转换后的二进制是:" + ConvertTenToBina(d));
    }

    /**
     * 十进制转二进制
     */
    static String ConvertTenToBina(double t) {
        StringBuilder builder = new StringBuilder();
        // String str = "";
        double val1 = 0;
        do {
            if (t % 2 == 0) {
                builder.append(0);
            } else {
                builder.append(1);
            }
            val1 = t / 2;
            // 判断数值大小,一千万以上用Math往下取整,以下用自定义的取整
            if (t > 9999999)
                t = Math.floor(val1);
            else
                t = trimFloat(val1);
        } while (val1 > 0);
        return builder.reverse().toString();
    }

    /**
     * 截取整数部分,只适合于数值低于一千万的十进制
     */
    static long trimFloat(double d) {
//      1先转换为整数
        String str1 = String.valueOf(d);
        double sourceDigt = 0;
        if (str1.contains("E")) {
            // 取出E前面的值
            String getE1 = str1.substring(0, str1.indexOf("E"));
            // 取出指数后的值
            String getE2 = str1.substring(str1.indexOf("E") + 1, str1.length());

            // 计算它的实际大小并返回给小数点截取
            sourceDigt = Double.valueOf(getE1) * Math.pow(10, Double.valueOf(getE2));
        } else {
            sourceDigt = d;
        }

//      2找到小数点位置
        int position = String.valueOf(sourceDigt).indexOf(".");
//      3截取整数部分
        String strResult = String.valueOf(sourceDigt).substring(0, position);
        long res = Long.valueOf(strResult);
        return res;
    }
}

相关文章

网友评论

    本文标题:2020-07-24 Java基础学习002

    本文链接:https://www.haomeiwen.com/subject/ufaulktx.html