变量的值存储在内存中,内存管理系统通过变量的类型分配存储空间,且该空间只能存储该类型数据,通过定义不同的变量,在内存中储存不同类型的数据。

JAVA的两大数据类型

  1. 内置数据类型

  2.引用数据类型

1. 内置数据类型

  JAVA的基本数据类型分为八种:六种数字类型(四个整数类型,两个浮点类型)、一种字符型、一种布尔型

    数字类型:

    整数类型:①byte  ②short  ③int  ④long

      有符号的二进制补码表示;

      从小到大的表示位数n依次为8位,16位,32位,64位,表示范围为(-2^(n-1))~(2^(n-1)-1);

      默认值为0,long型默认值为0L。

    浮点类型:①float  ②double

      float为单精度,32位浮点数,默认值为0.0f;

      double为双精度,64位浮点数,默认值为0.0d;

      浮点数不能用来表示精确的值,如货币。可用来表示测量的值,因为测量值不精确。

    

    布尔类型:boolean

      布尔类型表示一位的信息,只能取true和false,默认值为false。

    

    字符类型:char

      char是单一的16位Unicode字符;

      最小值为0(\u0000),最大值为65535(\uffff);

      可以储存任何类型的字符。

    

  通过

  java.lang.Byte;

  java.lang.Short;

  java.lang.Integer;

  java.lang.Long;

  java.lang.Float;

  java.lang.Double;

  java.lang.Character

  包中的MIN_VALUE、MAX_VALUE与SIZE属性可以分别获得各个数据类型的最小值、最大值与二进制位数。(例:Integer.MIN_VALUE)

  值得一提的是,double与float的最大最小值表示形式为科学记数法,Character的最大最小值需要强制转换成int才能显示更清楚。

  实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。

  2.引用类型

    Java中,引用类型的变量类似于C/C++的指针。

    引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型。

    变量一旦声明后,类型就不能被改变了。

    对象、数组都是引用数据类型。

    所有引用类型的默认值都是null。

    一个引用变量可以用来引用任何与之兼容的类型。

 Site site = new Site("Runoob")

   JAVA常量

      常量在程序运行时不能被修改;

      用final修饰;

      一般命名时全部用大写;

final double PI = 3.1415927;

    

    byte、int、long、和short都可以用十进制、16进制以及8进制的方式来表示。

      前缀 0 表示 8 进制,而前缀 0x 代表 16 进制,0b表示二进制。

    

    JAVA的类型转换:(自动类型转换、强制类型转换)

      自动类型转换:

        整型,常量,字符可以混合运算,先转换成同一类型再运算,转换的规则为:

            byte,short,char—> int —> long—> float —> double

        思想是位数少的转换成位数多的,整数转换成浮点。

        boolean不能进行类型转换,

        对象类型不能转换成不相关的类的对象。

      

      强制类型转换:

        例: 

        1 int i =128;
         byte b = (byte)i;

        注意以下几点:

          转换的数据类型必须是兼容的;

          浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入;

          转换过程中可能导致溢出或损失精度;

      

    隐含强制类型转换 

        1. 整数的默认类型是 int。   

        2. 浮点型默认为double,在定义 float 类型时必须在数字后面跟上 F 或者 f。

      

   常见问题:

      1.引用类型具有引用空间与数据空间

      1 MyDate today;             //将变量分配一个保存引用的空间
       today = new MyDate(); // 这句话是2步,首先执行new MyDate(),给today变量开辟数据空间,然后再执行赋值操作

          所以声明引用类型时,必须先给变量开辟数据空间才能赋值。

     

       2.整数默认为int  

        1 short a = 1;
         short b = 2;
         c = a+b                    //此时c的类型为int,java中比int小的类型在运算时会自动转换成int

      

      3.使用包装类来进行类型转换

      1 float f1=100.00f;
       Float F1=new Float(f1);
       double d1=F1.doubleValue();    //F1.doubleValue()为Float类的返回double值型的方法

          1.声明一个变量;2.生成对应的包装类;3.调用相应的方法进行类型转换:intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量……

        4.其他类转换成字符串的方法:

        1.调用类的串转换方法:X.toString();

        2.X+"";(自动转换)

        3.String.valueOf(X);

       5.字符串向其它类型的转换:

        1、先转换成相应的封装器实例,再调用对应的方法转换成其它类型:

            例如,字符中"32.1"转换double型的值的格式为:new Float("32.1").doubleValue()。也可以用:Double.valueOf("32.1").doubleValue()

          2、静态parseXXX方法:          

        1 String s = "1";
         byte b = Byte.parseByte( s );
         short t = Short.parseShort( s );
         int i = Integer.parseInt( s );
         long l = Long.parseLong( s );
         Float f = Float.parseFloat( s );
         Double d = Double.parseDouble( s );

        3、Character的getNumericValue(char ch)方法

    

     6.Date类与其它数据类型的相互转换

        

      整型和Date类之间并不存在直接的对应关系,只是可以使用int型为分别表示年、月、日、时、分、秒,

      Date类构造函数的三种形式:

           Date(int year, int month, int date):以int型表示年、月、日

           Date(int year, int month, int date, int hrs, int min):以int型表示年、月、日、时、分

           Date(int year, int month, int date, int hrs, int min, int sec):以int型表示年、月、日、时、分、秒

      在长整型和Date类之间的对应关系,Date(long date)。

      获取Date类中的年、月、日、时、分、秒以及周你可以使用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,转换为int

      Date类的getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date类也有一个toString()方法可以将其转换为String类。       

 import java.text.SimpleDateFormat;

 java.util.Date date = new java.util.Date();
//如果希望得到YYYYMMDD的格式
SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMdd");
String dateFormat=sy1.format(date);
//如果希望分开得到年,月,日
SimpleDateFormat sy=new SimpleDateFormat("yyyy");
SimpleDateFormat sm=new SimpleDateFormat("MM");
SimpleDateFormat sd=new SimpleDateFormat("dd");
String syear=sy.format(date);
String smon=sm.format(date);
String sday=sd.format(date);

     7.字符串拼接

      在 java 中,任何字符类型与字符串相加,结果都是拼接

        1 String s = null;
         s += "hello";
         System.out.println(s); // 输出 nullhello1

      其中,第三行代码等效于:

          s = (new StringBuilder(String.valueOf(s))).append("hello").toString(); 

      

     8.包装类Integer的自动封装

        1 Integer a = 1;

          int类型在赋值到Integer类时会自动封装并且调用valueOf()函数:  

        1 Integer a = Integer.valueOf(1);        //自动调用

          函数功能为:当 i >= -128 && i <= 127 时,Integer.valueOf(i) 会将 i 存储在内部类 IntegerCache的static final Integer cache[]里,这一字节的缓存内存地址是静态的

        1 public static Integer valueOf(int i) {
         assert IntegerCache.high >= 127;
         if (i >= IntegerCache.low && i <= IntegerCache.high)
         return IntegerCache.cache[i + (-IntegerCache.low)];
         return new Integer(i);
         }

            若执行如下代码:

        1 Integer a = 1;
         Integer b = 1;

            则a与b的引用指向同一个对象,即a == b。

              当a,b的范围在[-128~127]时,java为了提高效率,IntegerCache类中有一个数组缓存了值从-128到127的Integer对象。当我们调用Integer.valueOf(int i)的时候,如果i的值是>=-128且<=127时,会直接从这个缓存中返回一个对象,否则就new一个Integer对象。

              若仍有问题可查阅Java中Integer类的自动装箱和自动拆箱

        

感谢菜鸟教程:    http://www.runoob.com/java/java-basic-datatypes.html

二、JAVA基本数据类型:内置数据类型,引用类型的更多相关文章

  1. java入门---基本数据类型之内置数据类型

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

  2. Python中内置数据类型list,tuple,dict,set的区别和用法

    Python中内置数据类型list,tuple,dict,set的区别和用法 Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, ...

  3. Python的四个内置数据类型list, tuple, dict, set

    Python语言简洁明了,可以用较少的代码实现同样的功能.这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set.这里对他们进行一个简明的总结. List ...

  4. Python内置数据类型总结

    python的核心数据类型:(很多语言之提供了数字,字符串,文件数据类型,其他形式的数据类型都以标准库的形式表示 也就是用之前需要import ) ,但是python有很多都是内置的,不需要impor ...

  5. Hive内置数据类型

    Hive的内置数据类型可以分为两大类:(1).基础数据类型:(2).复杂数据类型.其中,基础数据类型包括:TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBL ...

  6. Python作业---内置数据类型

    实验2 内置数据类型 实验性质:验证性 一.实验目的 1.掌握内置函数.列表.切片.元组的基本操作: 2.掌握字典.集合和列表表达式的基本操作. 二.实验预备知识 1.掌握Python内置函数的基/本 ...

  7. python计算非内置数据类型占用内存

    getsizeof的局限 python非内置数据类型的对象无法用sys.getsizeof()获得真实的大小,例: import networkx as nx import sys G = nx.Gr ...

  8. Python内置数据类型之Dictionary篇

    1.查看函数XXX的doc string. Python的函数是有属性的,doc string便是函数的属性.所以查看函数XXX的属性的方法是模块名.XXX.__doc__ 2.模块的属性 每个模块都 ...

  9. 笔记-pyton内置数据类型

    笔记-pyton内置数据类型 1.      简介 The principal built-in types are numerics, sequences, mappings, classes, i ...

随机推荐

  1. CentOS 7 使用SVN+Apache搭建版本控制服务器

    svn简介 Subversion是一个免费/开源的版本控制系统, Subversion 可以跨越时间地对文件和目录, 以及它们的修改进行管理. 这就允许你恢复 数据的旧版本, 或检查数据的修改历史. ...

  2. 线段树 HDU-1166 敌兵布阵

    敌兵布阵是一个线段树典题,题目如下(点此查看题目出处): Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国 ...

  3. 18 os/os.path模块中关于文件/目录常用的函数使用方法 (转)

    os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名('. ...

  4. C#-MVC-Razor视图引擎及解决路径问题的三个方法

    Razor 视图引擎 与Aspx开发区别在于代码: 1.Razor 更智能,摒弃了<%%>格式,直接用@符号开启cs代码,遇到html时自动识别 2.遇到如汉字等即非cs代码,又非html ...

  5. Linux基础命令---lpq查看打印队列

    lpq lpq指令用来显示当前打印队列的状态.如果命令行中没有指定打印机或类,则将显示默认目标上排队的作业. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora.ope ...

  6. Android项目第一天,下载安装Android Studio和“我的第一个安卓项目”

    一.AS的下载我是在AS官方网站进行下载的最新版本,如图所示 二.AS的安装过程 点击你下载的安装包安装即可,傻瓜式一站到底. 到这一步时选择第二个按钮, 随后出现如下界面 这个窗口是提示我们设置代理 ...

  7. Objective-C不能以new开头命名属性

    ARC是在Xcode4.2推出的方便内存管理的一个特性,支持OS10.6及iOS4以后版本.引入ARC之后,相对应的内存管理使用方面做了必要的调整,这里不一一赘述:其中有一项就是文章题目说的,为了与手 ...

  8. freeswitch 显示主叫名称和主叫号码

    1.指定主叫号码 origination_caller_id_number 参数来指定显示的主叫号码 2.指定主叫名称 origination_caller_id_name 参数来指定显示的主叫名称 ...

  9. 【做题】SDOI2017硬币游戏——方程&概念处理

    原文链接 https://www.cnblogs.com/cly-none/p/9825339.html 题意:给出\(n\)个长度为\(m\)的互不相同的01串.有另一个串,初始为空.不断进行如下操 ...

  10. Centos7 安装并配置redis

    一. 安装 操作系统:Centos 7. 最小化安装 redis版本: 4.0.2 服务器地址:*** 安装过程: 安装wget, yum -y install wget 2.  下载redis wg ...