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. 完美解决--用VS中的Git做代码管理器,与他人共享代码

    1.创建代码仓库,这里说一下为什么要创建仓库,Git不能够作为源代码管理器,vs中自带的也只能够在本地进行管理,要和他们共享的话必须要有服务器端去存储代码,类似于SVN,它就有客户端和服务器端,这里推 ...

  2. vue2.0 带头冲锋(先穿鞋)

    事先说明:这次截图纯手工敲打,可不容易了.刚学会站直,不穿鞋,不得直接摔个狗食屎.(皮糙肉厚也顶不住啊). 废话不多了 !开始学基础.学过anguler1.0 ,会比较容易学vue. 溶解使用的是 v ...

  3. MySql的虚拟机和Xshell5的连接过程

    给大家介绍一下虚拟机和Xshell5连接的基本配置1.安装虚拟机,跟着提示一步一步安装即可,注意添加镜像文件,虚拟机就完成了.2.下载一个Xshell5,安装好之后.要修改虚拟机的网卡状态    1) ...

  4. webpack之前端性能优化(史上最全,不断更新中。。。)

    最近在用webpack优化首屏加载性能,通过几种插件之后我们上线前后的速度快了一倍,在此就简单的分享下吧,先上个优化前后首屏渲染的对比图. 可以看到总下载时间从3800ms缩短到1600ms. 我们在 ...

  5. lazy ideas in programming(编程中的惰性思想)

    lazy形容词,懒惰的,毫无疑问是一个贬义词.但是,对于计算机领域,lazy却是非常重要的优化思想:把任务推迟到必须的时刻,好处是避免重复计算,甚至不计算.本文的目的是抛砖引玉,总结一些编程中的laz ...

  6. Gulp livereload

    平时使用yeoman作为前端部署工具,感觉到yeoman构建工具虽然方便,但是速度和大小总是不尽人意. 最近看到了gulp http://gulpjs.com/ 比较感兴趣随动手一试 gulp的安装以 ...

  7. java 之 抽象工厂模式(大话设计模式)

    看了几次抽象工厂模式,每次查看都需要重新理解一次,可能是涉及的类和接口比较多,所以比较难缕清的关系吧!在笔者看来,我们还是要吸取其思想而不是生搬硬套. 来看下类图: 大话设计模式-类图 看类图已经很乱 ...

  8. Axios 执行post发送两次请求的小坑

    vue-resource2.0已经不再更新,所以vue2.0官方推荐使用axios来代替.实际项目也是应用上了vue+axios,然后就有了这么一段填坑的经历. 问题:axios使用post请求时,发 ...

  9. SEO是件贼有意思的事情 golang入坑系列

    这两天迷上了SEO.真心看不起百度的竞价排名,但作为一个商业网站,赚钱是一件无可厚非的事情.只做活雷锋,没有大金主是做不长的.做完功课后,发现百度和google的SEO策略又不相同,几乎是无法通用.百 ...

  10. CCF-201409-2-画图

    问题描述 试题编号: 201409-2 试题名称: 画图 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩 ...