zoukankan      html  css  js  c++  java
  • 四、变量和运算符

     

    一、数据的类型

    Java的基本数据类型有四种:

    整数类型、小数(浮点)类型、布尔类型、字符类型。

    二、整数类型

    当有变量被定义时,就会被分配到内存中去。比如int a=4;内存中就有一块地方,用来存放a的值。那值具体是多大的地方用来存放a呢?这就跟整数的类型有关了。

    Byte 占一个字节 表示的范围-128~127 -2^7~2^7-1

    Short 占两个字节 表示的范围-3276832767 -2^15~2^15-1

    Int 占四个字节 表示的范围-21474836482147483647 -2^31~2^31-1

    Long 占八个字节 表示的范围-2^255~2^255-1

    为什么占n个字节表示的范围就是从-2^(8n-1)2^(8n-1)-1呢?

    其实在电脑中,一个字节有八位,一位代表一个数,采用二进制。比如

    0

    0

    0

    0

    0

    0

    0

    1

    就代表1.

    最高位为符号位,0代表正数,1代表负数。

    那一个字节能代表的最低的数自然是

    1

    1

    1

    1

    1

    1

    1

    1

    -127

    同理能代表的最大的数为

    0

    1

    1

    1

    1

    1

    1

    1

    127

    那为什么最小的是-128呢?

    因为+0-0的表示重复了,

    0

    0

    0

    0

    0

    0

    0

    0

    1

    0

    0

    0

    0

    0

    0

    0

    显然都表示0,所以就规定用+0来代表0,而-0代表-128,这样规定使补码的运算也刚好吻合,所以byte的表示范围就是-128~127,因此byte a=-128不报错而byte a=128报错。

    同理可得各个整数类型的范围。

    三、小数(浮点)类型

    单精度浮点数(float)与双精度浮点数(double)的区别如下:

    1)在内存中占有的字节数不同

    单精度浮点数在机内占4个字节

    双精度浮点数在机内占8个字节

    2)有效数字位数不同

    单精度浮点数有效数字8

    双精度浮点数有效数字16

    3)所能表示数的范围不同

    单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38

    双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308

    一般只要记住它俩都是表示小数且double表示得更精确就行。

    四、布尔类型

    Boolean可以表示true或者false

    Boolean a=false;

    五、字符类型

    例如char a=’a’;char a=’嗨’;都是可以的。

    char只能存放一个字符,char a=’aa’;会报错。

    char Java中是2个字节。java采用unicode2个字节(16位)来表示一个字符。

    值得一提得是,charint可以根据ascII表进行转换

    我们可以int a=’a’;也可以char a=97;此时inta就为’a’所对应的ascII的的值。同理chara就是值为97ascII字符。

    同理char a=’a’+1int b=’a’+’b’;这些操作都是可以的。

    总之一句话,需要哪个类型的它就会转成哪个类型的,不过注意ascII码表的范围是0~127

    六、变量详解

    1.定义变量:int a;这就是定义变量。

    2.初始化变量:int a=45;这就是初始化变量。

    3.给变量赋值:比如你先定义了变量int a;之后的a=45;就是给变量赋值。

    4.当变量被定义的时候,就已经分配内存了。

    5.一般未被赋值的变量直接被使用会报错(如果能,存放的也是垃圾值,也就是随机值)

    6.数据类型转换(精度排序byte<short<int<long<float<double)

    数据会自动地从低精度转换到高精度(float a=1;可以输出a=1.0)

    数据无法从高精度转换到低精度(int a=6.5;将会报错),从高精度到低精度转换需要强转int a=(int)6.5;此时会损失精度,即此时a=6;(向下取整)

    Java中默认情况下小数是double类型,float a=3.4;会报错,因为double无法往低精度的float转换,我们可以强转float a=(float)3.4;也可以使用更快捷的方式float a=3.4f;在后面加个f也是强转的意思。同理可以long a=32545l;反正报错的话后面加个l就好了。也不是所有的数都能加一个字母代表强转,大部分时候我们还是使用括号+变量类型转换。例如int a=(int)(9+6.5+3.66);

    七、运算符

    1.基本运算符

    基本的+-*/运算法则跟数学的一样,先乘除后加减,有括号先算括号里面的。

    比如int a=1+3*(4+1);显然a=16;

    值得一提的是/,比如int a=7/4;7/4就会自动被转成int类型了,也就是向下取整等 1

    %取模(取余)运算符 int c=a%b;表示定义一个变量,值为a/b的余数,小数也可以用取余符号。

    2.自增运算符

    a++;等同于a=a+1;

    ++a;也等同于a=a+1;

    一般这两个是没有区别的,当你要达到变量+1的效果时,用哪个都可以。

    区别一般就是跟等号的优先级了,a++的优先级低于等号而++a的优先级高于等号:

    Int a=56;

    Int b=a++;

    此时a会先把值赋给b再进行自增(最终a=57,b=56)

    Int a=56;

    Int b=++a;

    a将会先自增再把值赋给b(最终a=b=57);

    值得一提的是,自增必须保证自增的数是确定的值,int a; int b=a++;不正确。

    int a=5; int b=(a++)++;也不正确。因为不确定编译的时候看到(a++)需要自增,而不知道(a++)是哪个确定的值,虽然我们知道可以算出来,但是计算机没那么聪明。

    还有就是自减运算,a--;--a;都是可以的,但是没有自乘运算和自除运算。

    3.算数运算符

    b+=a;表示b=b+a;

    B*=a;表示b=b*a;

    同理减号除号取模号都可以。

    4.关系运算符

    用于判断左右两个数的关系

    >(大于)  <(小于)  ==(等于)  !=(不等于)  >=(大于等于)  <=(小于等于)

    一般与判断语句放在一起:

    If(a==b) System.out.println(“a等于b”);

    值得一提:判断的等于是两个等号,一个等号是表示赋值,我们不能if(A=B),把一个赋值语句放在判断框里是不对的,判断框里需要的是bool类型的东西。

    If(true)if(1+1==2)都是可以的。

    5.逻辑运算符

    &&与  ||或  !非

    int a=1,b=1,c=2;

    if(a==1&&b==1) System.out.println("a=1b=1");

    if(a==1||c==1) System.out.println("a=1或者c=1");

    if(!(c==1)) System.out.println("c=1本来是不对的,取反之后所以判断框里的内容就 会变成对的");

  • 相关阅读:
    比较完整的HIS系统解释(转载记录)
    ajax读取XML文本(如读取城市)
    js实现自定义右键菜单--兼容IE、Firefox、Chrome
    元素间距属性(scrollLeft,scrollWidth,clientWidth,offsetWidth,padding,margin)
    Js控制iFrame切换加载网址
    比较两个数据库表table结构不同之处
    SQL Server 查询、搜索命令、语句
    Jquery简单瀑布流代码示例
    jQuery中添加自定义或函数方法
    Jmeter脚本增强之参数化(关联数据库)(7)
  • 原文地址:https://www.cnblogs.com/myz666/p/7489232.html
Copyright © 2011-2022 走看看