Java学习笔记 第三天

这回先上代码截图与输出截图,再上提炼的重点,最后是代码。大家看着哪个舒服就看哪个就行。

/*注意!这里是后来增加的改正!*/ 

下面说的强转类型中,科学计数法表示的数与整形数据运算后需要手动强转类型的原因是科学计数法表示的数为double型,,这个我之前用的比较少,在第四天的学习中通过调试才发现,,,

代码与输出截图:

个人认为比较重要的地方

其实这次学的东西都挺重要的,有的我反复对比学习了好几次,有的看了n多篇博客。对于C而言,Java升级改变了许多,有很多地方的改动都很巧妙合适,这让我十分感兴趣。不说废话了,下面是重点:

 布尔类型的设置:与C差别极大,不接受数字0,1,不接受强制转换,只接受true与false;

长整型与float型变量设置:长整型设置数字末尾必须有L或l;float型末尾必须有F或f;

char类型支持绝大多数字符的录入,中文,日文,英文..等等都可以,比如:char ch = ‘中’

char型对转义字符的录入:char ch = '\n',char ch = '\\'...等

byte,char,short 三者之间做运算的话,结果为int型,必须用至少int型变量接收

看到Java强制转换的知识时想到了我之前用的四舍五入一个小方法,不知道对大家有没有用,也可能不是最好的方法,但还是分享一下吧: 

比如,一件衣服250.114514元,你觉得好贵,跟老板说便宜点,取个整吧,老板觉得自己亏了一个亿,不同意,说,给你保留3位小数,你四舍五入吧!(假装心痛) ;于是有:

double price = 250.114514; 
int lowPri = (int)(price * 1E3 + 0.5);
double finalPrice = lowPri / 1E3;

得到的finalPrice便是250.115 。你血亏0.000486元,四舍五入就是1个亿,就没有买这件衣服。

代码中那个0.5就是补精度用的,先将原数据乘以1E3保证前两位精度不丢,然后看截断部分,不到0.5的加上0.5也无法给第三位补精度,那么直接截断就可以了。>=0.5的补上0.5后进一,给第三位补了精度1,。这样就完成了四舍五入。。

方法比较简单好懂,如果有更好的方法欢迎留言,感谢!

代码部分

/**
 * @author 阿白
 * @version v1.8
 * 希望毕业能直接找到工作,,,
 * */
import java.util.*;
public class HelloWorld {
    public static void main(String[] a) {
        System.out.println("变量的声明与使用:\n" +
        "1.变量类型:(1字节 = 8 bit)\n" +
        "   1.整型:byte(1字节),short(两字节),int(4字节),long(8字节)\n" +
        "       byte 可取整型值 [-128,127],short为[-2^15,2^15-1],\n" +
        "       int 为[-2^31,2^31-1],long为[-2^63,2^63-1]\n" +
        "   2.浮点型:float(4字节),double(8字节)\n" +
        "       float可取浮点值[-3.403E38,3.403E38],只能精确到小数点后七位\n" +
        "       double可取浮点值[-1.798E308,1.798E308],只能精确到小数点后14位\n" +
        "       这里稍微提示一下,怕想不起来:E308就是10的308次方...E38一样。\n" +
        "   3.字符型:char(2字节)\n" +
        "       存储对象为字符,方法放到后面说\n" +
        "   4.布尔型:boolean\n" +
        "       只有两个值0(false)和1(true)。这个与C除了名字不一样以外没什么区别\n" +
        "   5.String型:字符串型,这里类似于C++,但变化多且杂,直接给链接\n" +
        "2.变量的使用\n" +
        "   1.长整型变量的设置:long variable = 1234567890L (L必须带,小写大写无所谓)\n" +
        "   2.浮点型变量可以表示成一下这几种形式,就拿520这个数字来说:\n" +
        "       520.0   ,  .520  , 5.20E2  , 5200E-1  \n" +
        "       其中前两个为10进制表示,后两个为科学计数法表示。十进制表示必须有小数点\n" +
        "       Java默认浮点型为double型,如果想表示float型需要在变量末位加F或f,如:520.0f\n" +
        "   3.字符型:\n" +
        "       char类型支持绝大多数字符的录入,中文,日文,英文..等等都可以,比如:char ch = ‘中’ \n" +
        "       char型对转义字符的录入:char ch = '\\n',char ch = '\\\\'...等\n" +
        "       使用Unicode字符(16进制)表示,比如:char ch = '\\u0043',则这时ch中存的为大写字符C\n" );
        System.out.println("基本变量之间的运算:\n" +
        "   1:强制类型转换:比如:int k = 3; long t = (long)k; 此时k赋给t的值为long型。k类型不变\n" +
        "       如果从字节较大的类型向字节较小的类型转换,可能会造成数据丢失或精度损失(超容量的话)\n" +
        "       强制类型转换有时可用于取整:double a = 12.345, int t = (int)a; 那么此时a = 12\n" +
        "       这里多补充一下:强制转换是对数据的截断或补充,没有四舍五入,如果想把浮点型转化为整型\n" +
        "       同时还拥有四舍五入功能的话,可以把原数据加上0.5再截断,这样很方便的实现了四舍五入\n" +
        "       同样的,如果想保留小数点后1位,四舍五入,那么把原数据乘以10,加0.5,截断,再除以10.以此类推\n" +
        "   2:字符型可以直接参与整型或浮点型的运算,参加值为其ASCII码\n" +
        "       接收变量应为运算变量中字节最大的变量。如:int ans = (byte)2 + 3(默认int型),\n" +
        "       而不能是 byte ans = (byte)2 + 3。\n" +
        "   3.容量小的类型与容量大的类型运算时,小容量类型自动转换为大容量类型(容量指表示数的范围)\n" +
        "   4.byte,char,short 三者之间做运算的话,结果为int型,必须用至少int型变量接收\n" +
        "       如:int k = 'a' + (byte)2; int t = 'b' + 'c'; int low = (byte)1 + (short)2;\n" +
        "   ");
        Test.variableTest();
        Test.stringTest();
    }
}
class Test{
    public static void variableTest(){
        int ans1 = (int)3.5;
        int ans2 = (int)((byte)3 + 2E9);//IDEA要求我必须这样写,为什么要手动转int?我再试一组
        int ans3 = 3; long k = 5 + (long)ans3;//然而这样就不报错,是顺序的原因还是要设置变量,我再试一组
        byte ans4 = 4; int ans5 = ans4 + 2;//知道了,如果与科学计数法表示的数运算,需要最后手动转换
        System.out.println("byte ans4 = 4; int ans5 = (int) (ans4 + 2E9);这样不报错\n" +
                "byte ans4 = 4; int ans5 = ans4 + 2E9; 这样便报错。\n" +
                "知道了,如果与科学计数法表示的数运算,需要最后手动转换。原理放以后再说吧");
        float ans6 = 4.7f; double ans7 = ans6;//这里自动升类型了,没有报错,看来是可以的
        double ans8 = 4.7, ans9 = 3.1456789;
        System.out.println("ans1 = " + ans1 + " ans2 = " + ans2 + " ans7 = " + ans7
                + " ans8 = " + ans8 + " ans9 = " + (ans8 + ans9) + "\n" +
                " new ans8 = " + RDP.formats(ans8));//这玩意没有四舍五入功能,只是重置了精度
        boolean t1 = false, t2 = false, t3 = true;
        boolean low1 = t1 & t2, low2 = t1 | t3, low3 = t1 ^ t3 ,low4 = !t1, low5 = t1 && t2;
        boolean low6 = 1<0 & 1>0, low7 = t1 == false ? 1 > 0 : 1 < 0;//以上均未报错
        System.out.println(low7);//看来直接引入问号表达式也是支持的
    }
    public static void stringTest(){
        String str1 = 3.5f + "";//数字会直接被处理成字符串,看来输出方法中的+也是这个意思
        String str2 = 10 + "";
        String str3 = 'a' + "Hello";
        String str4 = "Hello" + 3;
        String str5 = 'a' + "Hello" + 10;
        System.out.println(str1 + "\n" + str2 + "\n" + str3 + "\n" + str4 + "\n" + str5);
    }

}
class RDP{//ReservedDecimalPlaces,太长了,简写了
    public static String formats(double value) {//网上抄的保留小数位数的方法,先用着
        return new Formatter().format("%.2f", value).toString();
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿白|

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值