zoukankan      html  css  js  c++  java
  • Chapter02_数据类型转换、运算符、方法入门

    第一节 数据类型转换

    java程序中要求参与的计算数据,必须要保证数据类型的一致性,如果数据类型不一样将发生类型的转换。

    1.1自动转换(是Java自动执行)

    1. 将取值范围小的自动提升为取值范围大的。
    public static void main(String[] args){
        byte b = 2;
        int i = 1;
        //byte x = b + i;
        //int类型和byte类型运算,结果是int类型
        int j = b+i;
        System.out.println(j)
    }
    
    • 转换原理图解

    1. byte类型内存占有1个字节,int类型内存占4个字节,byte类型在和int类型运算时,自动补充3个字节,因此计算结果还是int类型的。
    2. 同样道理,当一个int类型变量和一个double变量运算时,int类型会自动提升为double类型进行运算。
    public static void main(String[] args){
        int i = 1;
        double d = 3.6;
        
        double e = i +d;
        System.out.println(e);
    }
    
    • 转换规则

    范围小的类型向范围大的类型提升,byte、short、char运算时会自动提升为int类型

    byte、short、char-->int-->float-->double

    1.2强制转换(是需要我们手动的)

    1. 强制类型转换:就是将范围大的类型自动转换为取值范围小的类型。

    2. 转换格式

      数据类型 变量名 = (数据类型)被转数据值;

      将1.5赋值给int类型,代码修改为:

      //double类型转换为int类型,直接去掉小数点
      int i = (int)1.5;
      

    同样,当short类型与1相加的时候

    public static void main(String[] args){
        //short类型变量,内存中2个字节
        short s = 1;
      /*
      出现编译失败
      s和1做运算,1是int类型,s会被提升为int类型
      s + 1后结果是int类型,将结果再赋值给s时会发生错误,因为s是short类型
      short内存2个字节,int类型4个字节,必须将int强制转成short才能完成。
      */
    	s = s +1;//编译失败
        s = (short)(s+1);//编译成功
    }
    

    强烈注意

    • 浮点数转成整数,直接取消小数点,可能造成数据损失精度。

    • int强制转成short砍掉两个字节,可能造成数据丢失。

      //定义s为short范围内最大值
      short s=32767;
      s = (short)(s+10);
      

    1.3ASCLL编码表

    public static void main(String[] args){
        //字符类型变
        char c = 'a';
        int i = 1;
        //字符型类型和int类型计算
        System.out.println(c+i);//输出结果98
    }
    

    编码变:就是讲人类的文字和一个十进制数进行对应起来组成一张表格。

    人们规定:

    字符 数值
    0 48
    9 57
    A 65
    Z 90
    a 97
    z 122

    第二节 运算符

    2.1算术运算符

    算数运算符包括:
    + 加法运算,字符串连接运算
    - 减法运算
    * 乘法运算
    / 除法运算
    % 取模运算,两个数字相除取余数
    ++、-- 自增自减运算
    • ++运算,变量自己增长1.--运算,变量自己减少1,用法一致。(以加法为例)

      • 独立运算:

        • 变量在运算时,前++和后++没有区别。
      • 混合运算:

        • 和其他变量放在一起。前++和后++就不同了。

        • 变量前++:变量a自己加1,将加1后的结果赋值给b。

          public static void mian(String[] args){
              int a = 1;
              int b = ++a;
              System.out.println(a);//结果是2
              System.out.println(b);//结果为2
          }
          
        • 变量后++:变量a先把自己的值1,赋值给变量b,此时变量b的值就是1,变量a的值再自增加1,a的值就是2.

          public static void mian(String[] args){
              int a = 1;
              int b = a++;
              System.out.println(a);//结果是2
              System.out.println(b);//结果是1
          }
          
    • +符号在字符串中的操作:

      • +符号在遇到字符串的时候,表示连接、拼接的含义。

      • "a"+"b"的结果就是ab,连接的含义

        public static void mian(String[] args){
            System.out.prinntln("6+9="+6+9);//输出的6+9=69
        }
        

    2.2赋值运算符

    赋值运算符包括:
    = 等于号
    += 加等于
    -= 减等于
    *= 成等于
    /= 除等于
    %= 取模等
    • 赋值运算符,就是讲符号右边的值,赋值给左边的变量。

      public static void main(String[] args){
          int i = 6;
      	i+=6;//计算方式i = i+6;
          System.out.println(i);结果是12
      }
      
      

    2.3比较运算符

    比较运算符包括:
    == 比较符号两边数据是否相等,相等结果为true。
    < 比较符号左边数据是否小于右边数据,如果小于为true。
    > 比较符号左边数据是否大于右边数据,如果大于为true。
    <= 比较符号左边数据是否小于等于右边数据,如果小于等于为true。
    >= 比较符号左边数据是否大于等于右边数据,如果大于等于为true。
    != 比较符号左边数据是否不等于于右边数据,如果不等于于为true。
    • 比较运算符是两个数据之间进行比较运算,运算结果都是布尔值true或者false。

      public static void main(String[] args){
          System.out.println(1==1);//结果为true
          System.out.println(1<2);//结果为true
          System.out.println(6>9);//结果为false
          System.out.println(2>=1);//结果为true
          System.out.println(3<=1);//结果为false
          System.out.println(3!=1);//结果为true
      }
      

    2.4逻辑运算符

    • 逻辑运算符使用来连接两个布尔型的结果的运算符,运算结果是布尔值true或者false
    逻辑运算符包括:
    & 与 无论左边是否为true或者false都判断右边。 false&true 结果为false
    | 或 无论左边是否为true或者false都判断右边。 false&true 结果为true
    ^ 非 相同为真,不同为假。
    && 短路与 1.两边都是true,结果为true 2.一边为false,结果为false 短路特点:符号左边为false,右边不再算
    || 短路或 1.两个边都为false,结果为false。 2.一边为true,结果为true 短路特点:左边为true,右边不在算
    ! 取反 1.!true的结果为false。 2.!false的结果为true
    • 位运算符:&、|、^、~、<<、>>、>>>(0,1)
      • &:有0则0
      • |:有1则1
      • ^:相同为0,不同为1(涉及二进制)
      • ~:按位取反(取反码)
      • <<:左移位相当于乘以2^移位数(除去最高位,右边补0)
      • >>:右移位相当于除以2^移位数(除去后两位,最高位是0补0,是1补1)
      • >>>:无符号右移位(除去后两位,左边补0)
    public static void main(String[] args){
        System.out.println(true && true);//true
        System.out.println(true && false);//false
        System.out.println(false && true);//false ,右边不计算
        
        System.out.println(false || false);//false
    	System.out.println(false || true);//true
    	System.out.println(true&&false);//true,右边不计算
    	
        System.out.println(!true);//false
    }
    }
    

    2.5三元运算符

    • 格式:数据类型 变量名 = 布尔类型表达式?结果1:结果2

    • 计算方式:

      • 布尔类型表达式的结果为true,三元运算符整体结果为结果1,赋值给变量。
      • 布尔类型表达式结果为false,三元运算符整体的结果为结果2,赋值给变量。
      public static void main(String[] args){
          int i = (6==9?66:99);
          System.out,println(i);//结果为99
          int j = (2<=9?100:200);
          System.out.println(j);//结果为100
      }
      

    第三章 方法的入门

    3.1概述

    • 方法:就是将一个功能抽取出来,把代码单独定定义到一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用,这样既实现了代码的复用性,也解决了代码冗余的现象。

    3.2方法的定义

    方法写之前首先考虑三要素:

    1. 返回值类型
    2. 方法名称
    3. 参数列表
    • 定义格式:

      修饰符 返回值类型 方法名(参数列表){
          方法体
          return ;
      }
      
    • 定义格式解释:

      • 修饰符:目前固定的写法 public static
      • 返回值类型:也就是方法最终产生的数据结果是什么类型。
      • 方法名称:方法的名字,规则和变量一样,小驼峰。
      • 参数类型:进入方法的数据是什么类型。
      • 参数名称:进入方法的数据对应的变量名称
      • PS:如果参数有多个,使用逗号进行分隔。
      • 方法体:方法需要做的事,若干行代码
      • return:两个作用。第一停止当前方法,第二将后面的返回值还给调用处
      • 返回值:也就是方法执行后最终产生的数据结果
    • 注意:return后面的"返回值”,必须和方法名称前面的“返回值类型”,保持对应。

    • 举例:

      public static void methodName(){
          System.out.println("这是一个方法");
      }
      

    3.3方法的三种调用格式

    方法在定义完毕后,方法不会自己运行,必须被调用才能执行,我们可以在主方法main中来调用我们自己定义好的方法。在主方法中直接写要调用的方法名称就可以调用了。

    1. 单独调用:方法名称(参数);
    2. 打印调用:System.out.println(方法名称(参数));
    3. 赋值调用:数据类型 变量名称 = 方法名称(参数);
    public static void mian(String[] args){
        //单独调用
        sum(1,2);
        //打印调用
        System.out.println(sum(3,6));
        //赋值调用
        int number = sum(19,3);
        System.out.println(number);
    }
    //方法
    public void int sum(int a,int b){
        int result = a+b;
        return result;
    }
    
    

    3.4注意事项

    • 方法定义的 注意事项:
      • 方法必须定义在一个类中,方法外
      • 方法不能定义在另一个方法的里面。

    3.5扩展知识点

    1. +=符号扩展

      下面程序有问题吗?

      public static void main(String[] args){
          short s = 1;
          s +=1;
          System.out.println(s);
      }
      

      分析:s +=1;逻辑上看作是s = s+1;计算的结果被提升为int类型,在向short类型赋值时发生错误,因为不能将取值范围大的类型赋值到取值范围小的类型。但是,s=s+1进行两次运算,+=是一个运算符,只运算一次,并带有强制转换的特点,也就是说s+=1;就是s=(short)(s+1);因此程序没有问题编译通过,运行结果为2.

      1. 常量和变量的运算

        public static void main(String[] args){
            byte b1 = 1;
            byte b2 = 2;
            byte b3 = 1+2;
            byte b4 = b3+b2;
            System.out.println(b3);
            System.out.println(b4);
        }
        

    分析:b3 = 1+2,1和2是常量,为固定不变的数据,在编译时(编译器javac),已经确定了1+2结果并没有超过byte类型的取值范围,可以赋值给变量b3,因此b3=1+2是正确的。

    反之,b4 = b2+b3,b2和b3是变量,变量的值是可能发生变化的,在编译的时候,javac不确定b2+b3的结果是什么,因此会将结果以int类型处理,所以int类型不能赋值给byte类型,因此编译失败。(发生了自动转换,在计算的时候byte和short会自动转换为int类型)

  • 相关阅读:
    5个最好用AngularJS构建应用程序框架
    5款最好的免费在线网站CSS验证器
    10款最优秀的开源移动开发工具
    10个最好的免费PS图象处理软件方案
    10个基本的HTML5动画工具设计
    6款最好的免费在线二维码生成器
    Redis配置文件参数说明
    Redis学习手册(主从复制)
    java.lang.OutOfMemoryError: PermGen space PermGen space & java.lang.OutOfMemoryError: Java heap space Heap siz
    TNSNAMES.ORA 配置
  • 原文地址:https://www.cnblogs.com/anke-z/p/12253312.html
Copyright © 2011-2022 走看看