Java中的基础数据类型(四类八种):

  1.整数型
    byte----使用byte关键字来定义byte型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。byte型是整型中所分配的内存空间是最少的,只分配1个字节;取值范围也是最小的,只在-128和127之间,在使用时一定要注意,以免数据溢出产生错误。

    short----short型即短整型,使用short关键字来定义short型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。系统给short型分配2个字节的内存,取值范围也比byte型大了很多,在-32768和32767之间,虽然取值范围变大,但是还是要注意数据溢出。

    int----int型即整型,使用int关键字来定义int型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。int型变量取值范围很大,在-2147483648和2147483647之间,足够一般情况下使用,所以是整型变量中应用最广泛的。

    long----long型即长整型,使用long关键字来定义long型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。而在对long型变量赋值时结尾必须加上“L”或者“l”,否则将不被认为是long型。当数值过大,超出int型范围的时候就使用long型,系统分配给long型变量8个字节,取值范围则更大,在-9223372036854775808和9223372036854775807之间。

  2.浮点型
    float----float型即单精度浮点型,使用float关键字来定义float型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。在对float型进行赋值的时候在结尾必须添加“F”或者“f”,如果不加,系统自动将其定义为double型变量。float型变量的取值范围在1.4E-45和3.4028235E-38之间。

    double---double型即双精度浮点型,使用double关键字来定义double型变量,可以一次定义多个变量并对其进行赋值,也可以不进行赋值。在给double型赋值时,可以使用后缀“D”或“d”明确表明这是一个double类型数据,但加不加并没有硬性规定,可以加也可以不加。double型变量的取值范围在4.9E-324和1.7976931348623157E-308之间。

  3.布尔型
    boolean(true, false):布尔类型又称逻辑类型,只有两个值“true”和“false”,分别代表布尔逻辑中的“真”和“假”。使用boolean关键字声明布尔类型变量,通常被用在流程控制中作为判断条件。

  4.字符型
    char:char型既字符类型,使用char关键字进行声明,用于存储单个字符,系统分配两个字节的内存空间。在定义字符型变量时,要用单引号括起来,例如‘s’表示一个字符,且单引号中只能有一个字符,多了就不是字符类型了,而是字符串类型,需要用双引号进行声明。

  基础数据类型变量和值全部存到栈,所以不能为空。

Java引用类型:

  所有的类
  所有的数组
  所有的接口

补充:Java堆栈:

  栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共 享。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要 在运行时动态分配内存,存取速度较慢。

补充:Java中的运算符优先级

Java中的变量的赋值:

1.  赋值不能超过数据类型的范围

public class Test1
{
    public static void main(String[] args){
        //byte的范围是-128~127
        byte b=200;
    }
}

注:在Java中,给整数变量赋值时,后面的值会先给一个int

2.强制类型转换:

public class Test1
{
    public static void main(String[] args){
        //可以在值得前面写一个(byte)让他强制转换
        byte b=(byte)200;
        System.out.println(b);
    }
}

强制转换为byte类型之后,因为200大于了byte类型的最大取值范围127,所以会在从头开始,也就是再从byte类型的最小值-128开始数(200-127)位,得出-56。

3.

public class Test1
{
    public static void main(String[] args){
        short s=123;
        int i=50000;
        s=i;
    }
}

将i的值赋给s,类型不兼容,int的最大值超过了short的最大的范围

4.

public class Test1
{
    public static void main(String[] args){
        long i=888;
        long l=88888888888;
    }
}

88888888888没有超过long的范围,为什么还是会报错?因为将数字赋给一变量时,首先给他一个int类型,而8888888888超过了int的范围所以报错,应该在超出范围的数字后面加一个l声明,l不分大小写。

public class Test1
{
    public static void main(String[] args){
        long i=888;
        long l=88888888888l;
        long k=88888888888L;
    }
}

5.

public class Test1
{
    public static void main(String[] args){
        float f=12.345;
    }
}

小数变量的值默认为double型,如果需要可以加f进行声明:float f=12.345f; 。

double没有问题。

6.

public class Test1
{
    public static void main(String[] args){
        char a=98;
        System.out.println(a);
    }
}

ASCII表:

public class Test1
{
    public static void main(String[] args){
        short s=123;
        char a='a';
        System.out.println(s+a);
    }
}

在这样的运算中,计算的是它们在ASCII表中的位置的值。

类型转换优先级:

char  short  byte  进行运算的时候,默认取值为int

显式转换:也叫作强制类型转换,可能会导致精度丢失,精度由高到低,需要声明

隐式转换:精度由低到高,不需要声明

变量赋值练习:

        /*
        int a = 1, b = 2, c = 3;

         等价于
        int a;
        int b;
        int c;

        */
        int i = 1, j;
        // 等价于
        int i = 1;
        int j;

        float f1 = 0.1;
        //0.1默认类型为double,应 float f1 = (float)0.1;
        float f2 = 123;
        long l1 = 12345678, l2 = 88888888888;
        //l2的值超过了默认类型int的范围
        double d1 = 2e20, d2 = 124;
        byte b1 = 1, b2 = 2, b3 = 129;
        //b3的值超过了byte的范围, 应用b3=(byte)129;
        j = j + 10;
        i = i / 10;
        i = i * 0.1;
        //应用 i = (int)(i * 0.1);
        char c1 = 'a', c2 = 125;
        byte b = b1 - b2;
        //应改为  int b = b1 - b2;  或者   byte b =(byte) b1 - b2;
        char c = c1 + c2 - 1;
        // int  c = c1 + c2 - 1;  或    char c = (char)(c1 + c2 - 1);
        float f3 = f1 + f2;
        float f4 = f1 + f2 * 0.1;
        //double f4 = f1 + f2 * 0.1;  或    float f4 =(float)( f1 + f2 * 0.1);
        double d = d1 * i + j;
        float f = d1 * 5 + d2;
        //同上
        int a, b, c;
        a = 2;
        b = 'q';
        c = 4;
        char d = '5';
        byte e;
        e = a + b;
        //e =(byte) a + b;
        boolean f = true;
        double g = 4.3;
        g += b;
        b += 0.3;
        b = b + 0.3;
        //b =(int) b + 0.3;
        c += f ? 2 : 4;
        float h = 12.5;
        //float h =(float) 12.5;
        float i = 14.5;
        //同上
        e = h + i;
        e += h;
        a += 2147483646;
        float j = h / 0.5;
        //float  j =(float) h / 0.5;

Java之数据类型,变量赋值的更多相关文章

  1. Java基本数据类型之间赋值与运算归纳

    前言:面对“byte b1=3;byteb2=7;byte b=b1+b2;”报错,而“int i1=3;int i2=7;int i=i1+i2;”不报错,进行了深入探究,从而引申出java基本类型 ...

  2. Java ——关键字 数据类型 变量 常量

    本节重点思维导图 Java程序结构 public class 类名 { public static void main(String[] args){ //……语句 } } 一门语言是由以下各种元素组 ...

  3. 【转】 Java中的变量赋值和参数传递

    原文地址:http://blog.csdn.net/whmii/article/details/3363667 变量赋值和参数传递是java中两个容易让人迷惑的问题.对于原始类型(primitives ...

  4. 【Java】成员变量赋值执行顺序

    程序中成员变量赋值的执行顺序

  5. Java基本数据类型总结、类型转换、常量的声明规范,final关键字的用法

    1  Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过 ...

  6. 6. Java基本数据类型

    Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...

  7. 011 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 05 变量的三个元素的详细介绍之三—— 变量值——即Java中的“字面值”

    011 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 05 变量的三个元素的详细介绍之三-- 变量值--即Java中的"字面值" 变量值可以是 ...

  8. Java-Runoob:Java 基本数据类型

    ylbtech-Java-Runoob:Java 基本数据类型 1.返回顶部 1. Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根 ...

  9. (六)Java 基本数据类型

    Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...

  10. JavaSE基础(四)--Java基本数据类型

    Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...

随机推荐

  1. js的数组方法整理

    slice 从已有的数组中返回选定的元素.该方法不会修改数组,而是返回一个子数组. 语法:arr.slice(start,end) start: 必须,规定从何处开始选取.如果是负数,就是从尾部开始算 ...

  2. key-value存储数据库--Redis

    1.简介 Redis是完全开源的ANSI C语言编写.遵守BSD协议,高性能的key-value数据库. 1.1特点 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载 ...

  3. 关于svg

    动画:css3动画,canvas(js动画),svg(html动画). svg基本元素 version: 表示 <svg> 的版本,目前只有 1.0,1.1 两种 xmlns:http:/ ...

  4. android 加载图片圆角等功能的处理

    以Glide为例: Glide.with(getContext()).load(item.getSoftLogo()).transform(this.glideRoundTransform).into ...

  5. CentOS7 安装sentry(最新)

      Sentry 是一款基于 Django实现的错误日志收集和聚合的平台,它是 Python 实现的,但是其日志监控功能却不局限于python,对诸如 Node.js, php,ruby, C#,ja ...

  6. TFboy养成记 tf.cast,tf.argmax,tf.reduce_sum

    referrence: 莫烦视频 先介绍几个函数 1.tf.cast() 英文解释: 也就是说cast的直译,类似于映射,映射到一个你制定的类型. 2.tf.argmax 原型: 含义:返回最大值所在 ...

  7. sqoop的导入导出

    1.知道某列的值的增量导入(mysql------>文件) bin/sqoop import \--connect jdbc:mysql://bigdatcdh01:3306/test \--u ...

  8. python3.5安装pyHook,解决【TypeError: MouseSwitch() missing 8 required positional arguments: 'msg', 'x', 'y', 'data', 'time', 'hwnd', and 'window_name'】这个错误!

    为什么安装 pyHook包:为Windows中的全局鼠标和键盘事件提供回调. Python应用程序为用户输入事件注册事件处理程序,例如鼠标左键,鼠标左键,键盘键等 先要实时获取系统的鼠标位置或者键盘输 ...

  9. 给dalao们递dalao们的博客

    hqh使用0 1敲完AC代码 FNXF FNXF tfx .io结尾的都是dalao! ssttkkl 复读:.io结尾的都是dalao! ThetaS Pirote YanQuijote 昵称不能为 ...

  10. 【HNOI2002】营业额统计

    https://www.luogu.org/problem/show?pid=2234 用Treap维护,每次查询这个数的前驱与后继哪个和它差值更小. 由于查询一个数时在Treap走出的路径必定经过它 ...