zoukankan      html  css  js  c++  java
  • JavaSE学习(二):进制转换—数据类型转换—Java运算符

    一、进制转换

    1.1 其他进制转十进制(以十六进制为例):

      十六进制范围:0-9, A-F对应数字10-15 

      2A7E(16)  =  14*16(0) +7*16(1) + 10*16(2)  + 2*16(3) =  10878(10)

    1.2 十进制转二进制:将十进制数除以2,取余数,将最后一位余数排在第一位,倒数第二位的数排在第二位,依次排列,构成的01数字串即为表示该十进制数的二进制数。

      总结:十进制%二进制 余数 0-1(Java中符号 “%”表示取余),逆序排列。

    (图片引自百科)

    1.3 十进制转八进制:十进制%八进制 余数 0-7,逆序排列。

      为了区分十进制在数前加0区分   202  ----0312

    1.4 十进制转16进制:十进制%16进制 余数 0-9 A-F(),逆序排列。

    为了区分十进制在数前加0x区分   1203 --- ox4B3

    二、数据类型之间的转换

      两种方式:隐式转换和强制转换

    2.1 隐式转换

    存储范围从小到大自动实现隐式转换

    byte b1 = 3;

    byte b2 = b1 + 4;    //隐式转换

    int i = b1; 隐式转换

    例程:Demo1.java

    复制代码
     1 public class Demo1{
     2     //基本类型的隐式转换
     3     public static void main(String [] args) {
     4         //byte b = 128;
     5         byte b1 = 1;
     6         //byte b2 = b1 + 1;     //隐式转换,结果byte转为int,报错
     7         byte b3= 2+3;           // 没隐式转换,byte 不会报错
     8         int i=b1;                      //隐式转换
     9         
    10         short s = b1;
    11         //short s1 = 1  +s;
    12         
    13         char c = '1';
    14         int i1 = c + 1;  //  50    隐式转换
    15         System.out.println(i1);
    16         System.out.println("b1的值为"+b1);
    17         System.out.println(b3);
    18         System.out.println(i);
    19         System.out.println(s);    
    20     }
    21 
    22 }
    复制代码

    注:byte short与 char 之间没有隐式转换

    2.2 强制转换:存储范围从大范围数据类型到小范围数据类型强制转换。

    小范围数据类型  变量名 = (小范围数据类型)   数据

    double ->float->long->int->short->byte

                  -char

    int i = 1;

    byte b  = (byte) 1;

    例程:Demo2.java

    复制代码
     1 public class Demo2 {
     2     public static void main(String[] args) {
     3         // 基本数据的强制转换
     4         int i = 4;
     5         byte b = (byte) i;
     6         System.out.println(b);
     7         
     8         double d = 4.3536;
     9         float f = (float) d;
    10         long l = (long)d ;//强转导致数据精度丢失
    11         System.out.println(l);
    12 
    13          int i2 = 128;
    14          byte b2 = (byte) i2;    // -128   强制类型转换造成数据溢出 原码  反码 正数不变负数各位取反, 补码:正数不变负数反码+1;
    15          System.out.println(b2);
    16     }
    17 
    18 }
    复制代码

    注:强制转换可能造成数据的溢出或者精度的丢失。 

    三、引用数据类型

    3.1 除了基本数据类型外,其他数据类型都是引用数据类型。

    String   Arrays  Scanner

    String :字符串。Java中用双眼号内,“内容”的数据称为字符串

    eg: “1235”  “我按你你们慢慢”

    3.2 思考:Java中char 类型数据能不能存储一个汉字?

    答:能;

    因为Java中编码格式采用Unicode编码,Unicode编码中一个英文或一个汉字各占两个字节,char类型能够储存两个字节的数据。所以可以。

    例子Demo3.java

    复制代码
     1 public class Demo3 {
     2     public static void main (String [] args) {
     3         
     4         //引用类型String的运用
     5         String  s1 = "I Love ";
     6         System.out.println(s1);
     7         
     8         //    算术运算符+号的运用    
     9         System.out.println(1 + 2 + 3 + 4);       // 10   加法运      运算没有优先级左到右依次执行
    10         System.out.println(1 + 2 + "字符串");   // "3   字符串“    先加法运算,后字符串拼接
    11         System.out.println(1 + 2 + 3 + "4");    // "64"
    12         System.out.println(1 + 2 + "3" + 4);    // "334"
    13         System.out.println(1 + "2" + 3 + 4);   // "1234"
    14         System.out.println("1" + 2 + 3 + 4);   // "1234"
    15     }
    16     
    17 }
    复制代码

    四、运算符

    3.1分类:算术运算符、关系运算符、逻辑运算符、按位运算符、条件运算符

    3.2算术运算符

      +  -  *  /  %  ++   --

    1、+ :在Java中既可以做加法运算也可做拼接。

      当+ 号两边都是整型或浮点型时做加法运算,当至少一边是字符串类型时做拼接类型。

      注:当做拼接操作时隐式转换为字符串格式。

      例程:如上Demo3.java

    2、/ :表示取整操作      5/2   运行结果为  2

         % :取余操作         5%2 运行结果为: 1

       注:要想得到数学中的除法运算结果俩个数据至少有一个为浮点类型。

    给定一个数99999秒,将其转为多少小时多少分中多少秒?

    99999%   

    例子Demo4.java

     View Code

    3、前++,后++,前--,后--

    int i = 5; int j ;

    前++: ++i  规则:先自身加1,再后运算。

     j = ++i;  i = 6   j = 6;

    后++: i++  规则:先运算,再自加1。

    j = i++; i = 6,  j = 5;

    int i = 5; int j ;

    前--: j = --i;   i = 4;  j = 4;

    后--: j = i--;   i = 4;  j = 5;

    例程:Demo5.java

     View Code

    3.3 关系运算符

       >   <  >=  <=  !=   ==

    1.运算结果:布尔类型true 、false

    2.  ==:当等号两边是数值时可以比较等号两边数值是否相等(也是比较地址值),如果是引用类型是比较地址值是否相等。

    思考:为什么是数据类型可以比较数值是否相等?

    因为数值类型数据再计算机中是共享的,如果声明了一个数值型变量,并初始化了一个数据X,计算机会开辟一个新的的内存空间存储X的值,当定义了另一个同种数据类型数据x,机器在已开辟的内存空间会查找是否有x,若和X表示的是同一个数值,再计算机中不会再另开辟空间为x数值储存而是将地址值指向X的地址值。

    例子:Demo6.java

     View Code

    3.4赋值运算

    1、=:Java中单个等号表示将等号右边的数值赋给左边的变量。

    2、扩展性的赋值运算符

    +=   -=   *=  /=

    += :  i+=5   <===>  i = i + 5;

    *=:  i*=5    <===>  i = i * 5;

    例子:Demo6.java

    3.5 条件运算符(三目运算符)

    语法:布尔表达式 ? 值1:值2;

    当布尔表达式结果为true时,运算结果为值1;

    当结果为false时,运算结果为值2。

    值1、值2可以为任意类型数据,且可以为相等的数据类型。

    练习:求两个、三个数中的最大值,及判断数的奇偶。

    例子:Demo7.java

     View Code

    3.6 逻辑运算符:

    逻辑与:&&

    逻辑或:||

    逻辑与和逻辑或的短路功能:逻辑与遇到false时,后面的表达式不再参与运算,结果为false;逻辑或遇到true时,后面的表达式不再参与运算结果为true。

    例子: Demo8.java

     View Code
  • 相关阅读:
    CMD常用命令
    SpringMVC常用方法总结
    Oracle数据库中,sql中(+)(-)的含义
    电脑配置Java环境变量之后,在cmd中仍然无法识别
    tomcat部署项目遇到的问题
    tomcat的stratup小黑框名字修改
    CSS定位
    cookie存储userID所遇到的问题
    修改Tomcat的server.xml之后,tomcat 部署项目报错:Removing obsolete files from server... Could not clean server of obsolete files: null java.lang.NullPointerException
    安装oracle11g跳不过下载软件更新[INS-30131] 执行安装程序验证所需的初始设置失败
  • 原文地址:https://www.cnblogs.com/qiuxiaoliang/p/9510075.html
Copyright © 2011-2022 走看看