zoukankan      html  css  js  c++  java
  • Java基础4-变量和数据类型(基本数据类型间转换)

    一、变量

    1.什么是变量?

    *变量本质上说是内存中的一块空间,这块空间有数据类型,有名字,有字面值
    *变量包含三部分:数据类型、名称、字面值【数据】
    *变量是内存中存储数据的最基本的单元

    内存空间得到了重复使用

    定义变量的格式:

    数据类型 变量名=初始化值;

    public class variable
    {
        public static void main(String[] args){
            int j=100;
    //数据类型:int    变量名:j   字面值为:100 
            System.out.println(j);
        }
    }

    2.变量的分类

    变量分为局部变量、成员变量

    在方法体外【类体之内】声明的变量 称为成员变量。

    在方法体中中声明的变量为局部变量。

    public class variable
    {
            int c;
    // c为成员变量,在类体中声名,成员变量默认赋值
        public static void main(String[] args){
            int i;
            //变量i为局部变量,在方法体中声明,要赋值初始化否则
            //编译报错:变量i没有初始化
            i=100;
                    //声明的变量可以重复赋值
                for(int i=0;i<10;i++){
                  //在不同作用域中变量名可以相同
                 //java遵循就近原则
                 System.out.println(i);
                }
            System.out.println(i);
        }
    }                    

    3.什么是作用域?

    *变量的作用域描述的就是变量的有效范围

    *在什么范围内可以被访问,出了这个范围不能访问
    *变量作用域只要记住一句话:出了大括号就不认识了。

    public class variable
    {
            int c;
    // c为成员变量,作用域为整个类
        public static void main(String[] args){
            int i;
            //变量i为局部变量,作用域为主方法中
            i=100;
                    //声明的变量可以重复赋值
                for(int i=0;i<10;i++){
                  //在这个for循环中变量i只在这个循环中作用
                 //java遵循就近原则,这里打印输出for循环中定义的i
                 System.out.println(i);
                }
    //这里打印输出主方法中声明的i 因为for循环中声明的i出了for循环这个作用域就无法访问到了
            System.out.println(i);
        }
    }   

    二、数据类型

    1.数据类型的种类

    数据类型主要分为:基本数据类型和引用数据类型两种

    ①基本数据类型(8种):

    a数值型:

    *整数型:(byte/short/int/long)

    *浮点型:(float/double)

    b字符型:char

    c布尔型:boolean

    ②引用数据类型

    *类

    *数组

    *接口

    2.八种基本数据类型范围

    NO.

    数据类型

    大小/

    可表示范围

    默认值

    1

    byte(字节)

    8

    -128~127

    0

    2

    short(短整型)

    16

    -32768~32767

    0

    3

    int(整型)

    32

    -2147483648~2147483647

    0

    4

    long(长整型)

    64

    -9223372036854775808~9223372036854775807

    0

    5

    float(单精度)

    32

    -3.4E38~3.4E38

    0.0

    6

    double(双精度)

    64

    -1.7E308~1.7E308

    0.0

    7

    char(字符)

    16

    0~255

    ‘u0000’

    8

    boolean(布尔)

    -

    true false

    false

    3.数据类型的作用

    *不同的数据有不同的类型,不同的数据类型底层会分配不同大小的空间
    *数据类型是指导程序在运行阶段应该分配多大的内存空间。

    4.java语言中的整数型

    *java语言中,整数型字面值被默认当做int类型来处理。
    要让整数型字面值被当做long类型来处理,需要在整数型字面值后面添加l/L,建议使用大写L

    ①java语言中整数型常量有三种表示方式

    • 10进制
    • 8进制,8进制以0开头,例如:012.
    • 16进制,16进制以0x开头,例如:0x123.

    5.基本数据类型之间的转换

    1.除布尔类型外其他7种可以互相转换
    2.小容量向大容量转换,自动类型转换
    byte<short<int<long<float<double
             char<
    注:任何浮点类型不管占用多少个字节,都比整数型容量大。
    char和short可表示的种类数量相同,但是char可以取更大的正整数
    3.大容量转换成小容量,叫做强制类型转换需要加强制类型转换符,程序才能编译通过,但是运行阶段会损失精度
    4.当整数字面值没有超出byte,short,char的取值范围,可以直接赋值给byte,short,char
    5.byte,short,char混合运算的时候,各自先转换成int类型再做运算
    6.多种数据类型混合运算,先转换成容量最大的那种类型再做运算。

    class note05
    {
        public static void main(String[] args){
        long x=456;
        //456整数型字面值被当做int类型
        //x变量在声明时是long类型,占用8个字节
        //int类型的字面值456赋值给long类型的变量x,存在类型转换
        //从小容量转换成大容量自动转换
        System.out.println(x);
        long y=2147483647;
        //2147483648被当做int类型,4个字节,但是字面值超过int类型范围需在后边加L
        //2147483648L是8个字节的long类型
        long z=2147483648L;
        System.out.println(z);
        long v=100L;
        //100L是long类型字面值,v是long类型变量,不存在数据类型转换直接赋值
        //int o=v;
        //从大容量转到小,不能直接赋值给小容量,所以int o=v不可以
            int o=(int)v;
        //需要强制类型转换,需要加强制类型转换符将v转换成int类型再赋值给int类型的o
        //加上强制类型转换符编译可通过,但运行阶段可能损失精度
        //强转原理:
        //原始数据:0000000 00000000 00000000 00000000 00000000 00000000 00000000 00100100
        //强转之后的数据:00000000 00000000 00000000 00100100
        //将左边的二进制砍掉,【所有数据都是这样完成的】
        byte p=50;
        //没有超出byte类型取值范围的话,该字面值可以直接赋值给byte类型的变量。
        /*关于浮点型数据类型
        float 单精度【4个字节】
        double 双精度【8个字节,精度较高】
        double精度太低【相对来说】,不适合做财务软件。
        涉及到财务,要求精度较高,所以sun在基础se类库中准备了精度更高的类型,是一种引用数据类型
        它是:java.math.BigDecimal(欲知后事,请持续关注)
        java程序中sunsun提供了一套庞大的类库,java程序员是基于这套基础的类库来进行开发的
        在java语言中,所有的浮点型字面值,默认被当作double类型来处理,
        要想该字面值以float类型来处理,需要在字面值后面添加F/f
        注意:
        double和float在计算机内部二进制存储的时候都是近似值。
        */
             double d=3.0;
        //3.0是double类型的字面值
        //d是double类型
        //不存在数据转换
        System.out.println(d);
        //5.1是double类型的字面值
        //f是float类型的变量
        //大容量转换成小容量需要加强制类型转换符,所以以下程序编译错误
        //解决方案
        //float f=float(5.1);
        //第二种方式:没有类型转换
        float f=5.1;
        }
    }

    附常见基本数据类型转换的错误和注意点

    class note06
    {
        */
        //出现错误,1000超出了byte的范围
    //byte a = 1000;
    //正确,因为20没有超出byte范围
    //所以赋值
    byte a = 20;
    //变量不能重名
    //short a = 1000;
    //正确,因为数值1000没有超出short类型的范围
    //所以赋值正确
    short b = 1000;
    //正确,因为默认就是int,并且没有超出int范围
    int c = 1000;
    //正确,可以自动转换
    long d = c;
    //错误,出现精度丢失问题,大类型-->>小类型会出现问题
    //int e = d;
    //将long强制转换成int类型
    //因为值1000,没有超出int范围,所以转换是正确的
    int e = (int)d;
    //因为java中的运算会会转成最大类型
    //而10和3默认为int,所以运算后的最大类型也是int
    //所以是正确的
    int f = 10/3;
    //声明10为long类型
    long g = 10;
    //出现错误,多个数值在运算过程中,会转换成容量最大的类型
    //以下示例最大的类型为double,而h为int,所以就会出现大类型(long)到小类型(int)
    //的转换,将会出现精度丢失问题
    //int h = g/3;
    //可以强制转换,因为运算结果没有超出int范围
    //int h = (int)g/3;
    //可以采用long类型来接收运算结果
    //long h = g/3;
    //出现精度损失问题,以下问题主要是优先级的问题
    //将g转换成int,然后又将int类型的g转换成byte,最后byte类型的g和3运算,那么
    //它的运算结果类型就是int,所以int赋值给byte就出现了精度损失问题
    //byte h = (byte)(int)g/3;
    //正确
    //byte h = (byte)(int)(g/3);
    //不能转换,还有因为优先级的问题
    //byte h = (byte)g/3;
    //可以转换,因为运算结果没有超出byte范围
    //byte h = (byte)(g/3);
    //可以转换,因为运算结果没有超出short范围
    short h = (short)(g/3);
    short i = 10;
    byte j = 5;
    //错误,short和byte运算,首先会转换成int再运算
    //所以运算结果为int,int赋值给short就会出现精度丢失问题
    //short k = i + j;
    //可以将运算结果强制转换成short
    //short k = (short)(i + j);
    //因为运算结果为int,所以可以采用int类型接收
    int k = i + j;
    char l = 'a';
    System.out.println(l);
    //输出结果为97,也就是a的ascii值
    System.out.println((byte)l);
    int m = l + 100;
    //输出结构为197,取得a的ascii码值,让后与100进行相加运算
    System.out.println(m);
        
        }
    }
    数据类型转换

    6.String字符砖类型

    String字符串类型不属于基本数据类型,它是一个类,属于引用数据类型,

    本质是一个字符类型的数组 char[] value={};以后再说。

    String型的使用需要双引号""

    String a="你好美女";

    char b='国';

    一个中文占用2个字节,char正好是占用两个字节。

  • 相关阅读:
    jquery animate()方法 语法
    jquery unload方法 语法
    jquery undelegate()方法 语法
    jquery unbind()方法 语法
    jquery trigger() 方法 语法
    jquery toggle()方法 语法
    jquery change() 函数 语法
    jquery blur()函数 语法
    jquery bind()方法 语法
    jquery checked选择器 语法
  • 原文地址:https://www.cnblogs.com/LuckyGJX/p/8723054.html
Copyright © 2011-2022 走看看