Java学习DAY2

变量和数据类型运算符

1.什么是变量

public class test {
    public static void main(String[] args ){
       int a ;
       a=10;
        System.out.println(a);
    }
}
  • a就是一个变量
  • 代码中创建一个变量等价于申请一块内存空间
  • 变量必须先定义才能被使用

2.变量的形态

public class test {
    static int a;   //静态属性/类成员变量/类变量
    int b;          //属性/成员变量/实例变量
    public static void main(String[] args ){
       int a ;      //局部变量
       a=10;
        System.out.println(a);
    }
}

3.整型变量

  • 基本语法格式
    int 变量名=初始值
  • Java中=表示赋值,意思是给变量设置一个初始值
  • 最后不要忘记带;
  • Java中,一个int变量占4个字节,和操作系统没有关系
    什么是字节?
    字节表示计算机中空间大小的基本单位,计算机使用二进制表示数据,我们认为8个二进制位(bit)为一个字节(byte) 四个字节表示的数据范围是-2^31 => 2^31-1,大概是-21亿到+21亿(2的 31 次方中31是这样算的 : 4*8=32-1=31 )
    用以下代码看Java中整型数据范围:
System.out.println(Integer.MAX_VALUE);//int的最大值
      System.out.println(Integer.MIN_VALUE);//int的最小值

结果

java 整数乘小数 java中整数除以整数 得小数_java


Interger就是Int的包装类

Long就是long的包装类

Short就是short的包装类

Double就是double的包装类

4.长整型变量

  • 基本语法格式
    long 变量名=初始值;
long num=10L;//定义一个长整型变量,初始值也可以写作10l(小写的L不是数字1)
       System.out.println(num);
  • Java中long类型占8个字节,数字表示范围是-2^63=> 2^63-1
  • 用以下代码查看Java的长整型数据范围
System.out.println(Long.MAX_VALUE);//long的最大值
       System.out.println(Long.MIN_VALUE);//long的最小值

结果

java 整数乘小数 java中整数除以整数 得小数_变量名_02

5.双精度浮点型变量

  • 基本语法格式
    double 变量名=初始值;
double num=1.0;
       System.out.println(num);
  • 神奇的代码1
int a =1;
       int b =2;
       System.out.println(a/b);

结果

java 整数乘小数 java中整数除以整数 得小数_System_03


大部分的编程语言中整数除以整数得到的还是整数,会把小数部分截断(直接舍弃).但有些语言就可以直接出现0.5,例如 Python3、JavaScript。dart…

Java中,int除以int得到的值还是int。若想得到0.5,需要用double类型计算。

double a=1;
       double b=2;
       System.out.println(a/b);

结果:

java 整数乘小数 java中整数除以整数 得小数_java_04

  • 神奇的代码2
double num=1.1;
       System.out.println(num*num);

结果

java 整数乘小数 java中整数除以整数 得小数_System_05

  • 神奇代码3(1)
double a=1.1;
      if(a*a==1.21){
         System.out.println("相等");
      }else{
         System.out.println("不相等");
      }

结果

java 整数乘小数 java中整数除以整数 得小数_System_06

  • 神奇代码3(2)

JAVA表示的浮点数有误差,不能拿==来比较两个浮点数是否相等,正确做法应该要把比较的浮点数进行相减,比较这个差值是否一定小于一定的范围(误差允许的范围).算钱的时候一般都以分为单位,此时均为整数计算,避免了浮点数计算。

double a=1.1;
        if(a*a-1.21<0.0000001&&a*a-1.21>-0.0000001){
           System.out.println("相等");
        }else{
           System.out.println("不相等");
        }

结果

java 整数乘小数 java中整数除以整数 得小数_System_07

6.单精度浮点型变量

  • 基本格式
    float 变量名=初始值;
float num=1.0f; //写作1.0F也可以
      System.out.println(num);

结果

java 整数乘小数 java中整数除以整数 得小数_java_08


float在Java中占4个字节。同样遵循IEEE 754标准,由于表示的数据精度范围比较小,精度也比较低,一般在工程上用到的浮点数都优先考虑double,不太推荐float。

7.字符型变量

  • 基本格式
    char 变量名=初始值;
char ch='a';

在C语言中使用ASCII表示字符,而Java中使用Unicode表示字符,因此一个字符占用两个字节,表示的字符种类更多,表示的字符种类更多包括中文。

8.字节类型变量

  • 基本语法格式
    byte 变量名=初始值;
byte value=0;
      System.out.println(value);

结果

java 整数乘小数 java中整数除以整数 得小数_System_09

  • 字节类型表示的也是整数,只占一个字节,表示范围比较小-128—127
  • 这个类型非常常见,尤其是进行网络编程的时候。

9.短整型变量

  • 基本语法格式
    short 变量名=初始值;
  • short只占用两个字节的整数,表示的数据范围是-32768—+32767
  • 这个表示的范围比较小,一般不推荐使用

10.布尔型变量

  • 基本语法格式
    boolean 变量名=初始值;
  • boolean类型的变量只有两种取值。true表示真,false表示假。
  • Java的boolean类型和int不能相互转换,不存在1表示true,0表示false这种用法。
  • Boolean类型有些JVM的实现是1个字节有些是占1个比特位,没有明确规定。

11字符串类型变量

注意:String类型不是基本数据类型,而是引用数据类型。

  • 基本语法格式
    String 变量名=“初始值”;
  • 代码示例:
String name="zhangsan";
        System.out.println(name);

若字符中要带有双引号怎么输出呢?
直接加双引号就会出错:

String str="my neme is""zhangsan“";
        System.out.println(str);

结果:

java 整数乘小数 java中整数除以整数 得小数_java_10


这里需要用到转义字符

String str="my neme is\"zhangsan\"";
        System.out.println(str);

结果:

java 整数乘小数 java中整数除以整数 得小数_java_11

  • 字符串长度
String str="hahaha";
        System.out.println(str.length());

结果

java 整数乘小数 java中整数除以整数 得小数_java_12

  • 字符串拼接
    +操作,表示字符串接, 使用+能够把两个字符串给拼接起来。

代码示例:

String a="hello";
        String  b="world";
        System.out.println(a+b);

结果

java 整数乘小数 java中整数除以整数 得小数_java 整数乘小数_13


不仅可以两个整数用+,还可以字符串用+。而且还可以字符串和整数进行相加:

String a="hello";
        int b=10;
        System.out.println(a+b);

结果

hello10

Process finished with exit code 0

要是想要先算a+b。我们要加括号。

String a="hello";
        System.out.println(a+(10+20));

结果

hello30

Process finished with exit code 0

其实还有下面这种写法。不过我们不太常用:

java 整数乘小数 java中整数除以整数 得小数_变量名_14

12.变量的作用域

作用域和变量形态密切相关。也就是该变量所能生效的范围,一般是变量定义所在的代码块(大括号)

13.变量的命名规则

**硬性指标**
  • 一个变量名只能包含数字、字母、下划线、$。
  • 数字不能开头。
  • 变量名对大小写敏感。Num和num 是两个不同的变量.
  • 变量名不能是JAVA的关键字
    软性指标
  • 见名知意
  • 多个单词构成的变量名。使用驼峰命名法:
    小驼峰(首个单词首字母小写,后续单词首字母大写)eg:studentName
    大驼峰(所有单词首字母都大写)eg:StudentName

14.理解类型转换

注意:但凡代码中涉及到了强制类型转换。意味着代码的正确性,就需要程序猿人工来保证了

  • int和long互相赋值
int a=10;
        long b=20;
        a=b;//编译出错,提示可能会损失精度
        b=a;//编译通过

结果

Error:(37, 11) java: 可能损失精度
  需要: int
  找到:    long

这时候可以进行强制类型转换

int a=10;
        long b=20;
        a=(int)b;
        System.out.println(a);

结果

20

Process finished with exit code 0

long 表示的范围更大,可以将int赋值给long,但不能将long赋值给int。

  • int和double类型相互赋值
    注意:int和doublel类型不能相互转换
int a=10;
        double b=1.0;
//        a=b;//编译出错,提示可能会损失精度
          b=a;//编译通过

double表示的范围更大,可以将int赋值给double,但是不能将double赋值给int。

  • int和boolean赋值
    int和boolean不能相互赋值。
  • int和byte相互赋值
int a=100;
        byte b=256;
        System.out.println(a);
        System.out.println(b);

java 整数乘小数 java中整数除以整数 得小数_变量名_15


报错:

java 整数乘小数 java中整数除以整数 得小数_java_16


byte表示的数据范围是-128到+127,256已经超过范围,而100还在范围之内。Java会自动进行一些检查校验,判断赋值是否合理。

15.逻辑运算符

注意:逻辑运算符的操作数和返回值都是boolean

  • 逻辑与&&:一假则假
  • 逻辑或||:一真则真
  • 逻辑非!:也称为逻辑取反
    逻辑与&&和逻辑或||都遵循短路求值,
System.out.println(10>20&&10/0==0);
        System.out.println(10<20||10/0==0);

结果:

false
true

Process finished with exit code 0

因为&&前面的是假,所以后面的除0操作就没被运行,这就是短路求值操作。

16.位运算符

注意:当&和|的操作数是整数(int,short,long,byte)的时候,表示按位运算,当操作数为boolean的时候,表示逻辑运算

  • 按位与&
  • 按位或|
  • 按位取反~
  • 按位异或^

17.移位运算符

  • 左移<<:最左侧不要了,最右侧补0.(左移一位相当于乘以2)
  • 右移>>:最右侧不要了,最左侧补符号位(正数补0,负数补1)(右移一位相当于除以2)
  • 无符号右移>>>:最右侧位不要了,最左侧补0