美文网首页从零学Java笔录Java学习笔记
从零学java笔录-第9篇 数据类型(三)

从零学java笔录-第9篇 数据类型(三)

作者: 凯哥Java | 来源:发表于2016-10-13 09:06 被阅读54次

    本文是《凯哥陪你学系列之java基础篇》

    本节主要内容:

    1:模运算涉及到负数结果:

    2:加号(+)的几种         用法

    3:自增、自减

    4:比较运算符

    1:模运算涉及到负数结果

    接上一篇

    System.out.println(-5%2);

    System.out.println(5%-2);

    运行结果:

    结论:在模运算中,正负号和被模数(被除数或是分母)保持一致。

    模运算的应用举例:

    我们知道任何数模上2后结果不是0就是1.我们可以使用这个特性进行开关算法开发。比如,当模上2是0的时候,表示开关打开,是1的时候表示开关关闭。

    2:加号(+)的几种 用法

    加号(+)也可以做连接符使用

    System.out.println(5+2);

    System.out.println("5"+"2");

    System.out.println("a"+"b");

    System.out.println('5'+'2');

    System.out.println('5'+'a');

    System.out.println('a'+'5');

    System.out.println('a'+'b');

    运行结果:

    结论:

    1:当加号两边是数字类型的时候 此时加号就是运算符的加

    2:当加号一边是字符串的时候。此时加号就是连接符了

    3:当加号两边是字符的时候,此时加号是将字符对应的ascii码值进行相加运算的

    实战:

    加号特殊用法:做连接符使用实例。

    需求:我想输出

    /**

    加号(+)特殊用法举例

    需求:我想输出 a= 4,b=5.怎么实现

    分析:

    a= 和b= 是不变的。变化的是4和5

    所以我们可以使用加号特殊用法:作为连接符的用法来实现

    **/

    /*

    这个类的名称是Demo

    */

    class AddDemo{

    public static void main (String [] args){

    int a = 4;

    int b = 5;

    System.out.println("a = " + a +"," + " b = " + b);//在控制台输出 你好!

    }

    }

    3:自增、自减

    自增的两种表现形式:

    int a = 3;

    a++;

    ++a;

    两种区别:

    a++:先把a赋值然后在+1

    而 ++a.是先+1然后在赋值。

    a++运行原理:

    具体代码体现:

    class AddPlusDemo{

    public static void main (String [] args){

    int a = 3;

    a = a++;//这个相当于 a = a ;然后在 a+1

    System.out.println("a = " +(a++));//输出结果为 3

    //(++a)这个相当于 a+1 然后在 a=a

    System.out.println("a = " +(++a));//输出结果为 5

    /**

    输出结果为 3和5解释:

    a = a++;

    其实就相当于

    a = a;                  //这个时候 a =3 的

    然后 a = a+1; //这个时候 a= 3+1 = 4了

    在输出:

    System.out.println("a = " +(++a));

    此时的a等于4了而不在等于3了。

    而 ++a 是先是 a+1 然后在赋值给a

    而此时 a=4所以 a+1 = 4+1 = 5

    然后在把5赋值给a

    所以 输出的是3和5

    **/

    }

    }

    输出结果:

    练习题:

    int a = 3,b,c;

    b=a++;

    c=++a;

    分别输出a、b、c的值。

    练习题代码

    class AddPlusDemo2{

    public static void main (String [] args){

    int a = 3,b,c;

    b = a++;//这个相当于 a = a ;然后在 a+1

    c = ++a;

    System.out.println("a = " +a +", b=" +b +",c="+c);//输出结果为 5

    }

    }

    结果:

    思考:

    int i=3;

    i=i++;

    这个时候在输出i的值是3?4?

    代码

    class IAddDemo{

    public static void main (String [] args){

    int i = 3;

    i = i++;

    System.out.println(i);

    }

    }

    输出结果:

    分析原因:

    i把自己原来的值存放在临时空间temp中。

    然后进行+1操作后,i变成了4.

    然后在从temp空间中将值赋值给i

    所以4被覆盖后成了3.

    自减运算:

    自减运算同自增运算类似。也分两种情况

    a—和—a

    区别:

    a--:是先赋值在减1

    --a:先减1在赋值

    练习题:

    模仿自增,做自减的练习

    4:赋值运算符

    赋值运算的几种表现形式:

    1:直接赋值 (等号)

    2:组合赋值(+=、*=、/=、-=、%=)

    +=组合运算:

    a+=1等价于:a = a+1;

    代码体现:

    class ValueDemo{

    public static void main (String [] args){

    int a =1;

    System.out.println(a);//输出 1

    System.out.println(a+=1);//输出 2

    }

    }

    输出结果为:

    面试题:

    short  s=3;

    s+=4;

    s=s+4;

    在编译时候会出错吗?有什么不同?

    s+=4。编译可以通过。

    s = s+4 编译不通过。会报错。精度丢失。

    分析原因:

    因为+=是java虚拟机自有的运算方式,一次运算的,在jvm中会自动进行类型转换的。是可以通过的。

    但是 s =s +4。是两次运算的,这个时候就会自动提升类型到int的而我们知道short类型是有范围的。而s又是一个变量,值是不确定的。

    所以,当s+4有可能超出short类型的范围。所以在编译的时候会报精度丢失的错误。

    ps:欢迎关注凯哥微信公众号:凯哥Java

    相关文章

      网友评论

        本文标题:从零学java笔录-第9篇 数据类型(三)

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