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. 【Java入门提高篇】Day1 抽象类

    基础部分内容差不多讲解完了,今天开始进入Java提高篇部分,这部分内容会比之前的内容复杂很多,希望大家做好心理准备,看不懂的部分可以多看两遍,仍不理解的部分那一定是我讲的不够生动,记得留言提醒我. 好 ...

  2. CKEdit( htm编辑器)

    http://ckeditor.com/   (强大的在线编辑器)

  3. 利用docker搭建spark hadoop workbench

    目的 用docker实现所有服务 在spark-notebook中编写Scala代码,实时提交到spark集群中运行 在HDFS中存储数据文件,spark-notebook中直接读取 组件 Spark ...

  4. 照虎画猫写自己的Spring——自定义注解

    Fairy已经实现的功能 读取XML格式配置文件,解析得到Bean 读取JSON格式配置文件,解析得到Bean 基于XML配置的依赖注入 所以,理所当然,今天该实现基于注解的依赖注入了. 基于XML配 ...

  5. zend Framework的MVC模式的搭建

    1.首先搭建Apache和MySQL,搭建的Apache中必须有PDO_MYSQL模块,如果没有,可以到官方下载. 1.配置HTTP.CONF (1)进入Apache的conf目录下,打开httpd. ...

  6. C++反汇编第二讲,不同作用域下的构造和析构的识别

    C++反汇编第二讲,不同作用域下的构造和析构的识别 目录大纲: 1.全局(静态)对象的识别,(全局静态全局一样的,都是编译期间检查,所以当做全局对象看即可.) 1.1 探究本质,理解构造和析构的生成, ...

  7. 【MySQL疑难杂症】如何将树形结构存储在数据库中(方案一、Adjacency List)

    今天来看看一个比较头疼的问题,如何在数据库中存储树形结构呢? 像mysql这样的关系型数据库,比较适合存储一些类似表格的扁平化数据,但是遇到像树形结构这样有深度的人,就很难驾驭了. 举个栗子:现在有一 ...

  8. JavaScript--我发现,原来你是这样的JS:函数表达式和闭包

    一.介绍 本次博客主要介绍函数表达式的内容,主要是闭包. 二.函数表达式 定义函数的两种方式:一个是函数声明,另一个就是函数表达式. //1.函数声明写法 function fn2(){ consol ...

  9. Nginx动静分离实现

    Nginx动静分离实现: Nginx是一种轻量级,高性能,多进程的Web服务器,非常适合作为静态资源的服务器使用,而动态的访问操作可以使用稳定的Apache.Tomcat及IIS等来实现,这里就以Ng ...

  10. Scala入门系列(八):面向对象之trait

    基础知识 1 将trait作为接口使用 此时Trait就与Java中的接口非常类似,不过注意,在Scala中无论继承还是trait,统一都是extends关键字. Scala跟Java 8前一样不支持 ...