1. java数据类型的划分

    程序的本质=数据的处理;

    数据库的本质=数据的存储。

    java之中数据类型一共分为两大类。

    ·基本数据类型:

    数值型:

    整型:byte,short,int,long 默认值都是0;

    浮点型:float,double 默认值:0.0;

    字符型:char 默认值: "\u0000";

    布尔型:boolean 默认值:false;

    ·引用数据类型:

    数组,类,接口 默认值:null;

基本数据类型是不牵扯内存操作的,属于数值操作;引用数据类型会牵扯到内存的操作。

而对于数值型的基本基本类型而言,主要区别在于保存的长度:

一般在开发中对数据类型的选择:

如果要表示整数就使用int,小数就使用double;

如果要表示日期或者内存文件大小的时候使用long;

如果要进行数据传输,编码转换使用byte;

如果要描述逻辑运算,使用boolean。

数据类型的转换分为两种模式:

· 自动转型:数据保存范围小的自动向保存范围大的数据类型转换;

|- 如果范围大和范围小的数据类型进行计算,则范围小的数据类型会自动变为参与的另外一个范围大的数据类型;

· 强制转换:

|- 无损转换:将范围小的数据类型强制变为范围大的数据类型;

|- 可能的有损转换:将范围大的数据类型变为范围小的数据类型。

范例:利用数据类型的扩大解决数据溢出问题

public class TestDemo {

public static void main(String args[]) {

// long 变量 = 自动转型为 long 的 int 型数据

long max = Integer.MAX_VALUE ; // 取得最大值、2147483647

int min = Integer.MIN_VALUE ; // 取得最小值、-2147483648

// long 型变量 + long(int 型常量自动转换) = long 型结果

System.out.println(max + 1) ; // 2147483648

System.out.println(max + 2) ; // 2147483649

// long(int 型变量强制) - long(int 型常量转换) = long 型结果

System.out.println((long)min - 1) ; // -2147483649

}

}

在开发之中尽量不要出现强制性的向下转型,除非你确定数据一定在允许范围之内。 范围小的数

据类型自动向范围大的数据类型转换。

其中byte类型也是最为常用的数据类型,此类型的长度为 8,范围是:-128 ~ 127 之间。

浮点型(小数)

Java 里面默认的小数常量其对应的类型都是 double。

double 和 int 相比,int 的范围要比 double 小(double 可以保存下全宇宙最大的有意义的数据)。所以 int 型的常量可以使用 double类型进行接收

但是浮点型之中除了有 double 之外还有 float 类型,只不过一般很少去直接使用 float。因为默认的小数是 double,如果要使用float,还需要强制转换

不同数据类型在进行计算之前都会首先默认向最大范围的数据类型转换,而后再进行计算处理,所以按照这个流程:

· byte → int → long → double;

字符型

在程序之中使用单引号声明的内容就表示字符,例如"'A'"、按照正常道理来讲,一个字符= 2 个字节(char = byte * 2),而且

最为重要的问题在于,Java 中的字符采用的是十六进制的编码方案,即:它可以存放一个中文。

与数据库的概念区别:

数据库之中不使用双引号,而使用"'"进行字符串的标记,里面是有很多内容的;

程序之中的"''"里面只能够包含有一个字符,程序中的""""与数据库中的"'"相同,可以包含多个内容(字符串)。

但是你千万要记住一点,在程序之中,char 可以和 int 互相转换,而转换后的 int 内容就是字符的编码。

字符编码范围:'A' (65 ) ~ 'Z' (90 );

字符编码范围:'a' (97 ) ~ 'z' (122 );

字符编码范围:'0' (48 ) ~ '9' (57

在现实开发之中编码有许多种,其中最为常用的就是 ASCII 码,也就是说 Java 中的使用的 Unicode 编码兼容 ASC II 码的内容。

也就是说明确告诉大家了,unicode 是有编码范围的,任何的文字都可以使用 unicode 完成。

如果以后要进行中文的处理,使用字符类型是最方便的,不要用字节

 

布尔型

布尔是一个数学家的名字,对于布尔类型使用 boolean,而对于 boolean 的内容取值有两个:true(真)、false(假)。一般而言,

布尔型往往是与判断逻辑相结合的,例如:if 语句,这个语句之中必须要求判断 boolean 型的结果。

许多的编程语言实际上并没有明确的提供有布尔型的操作,往往会使用 0 表示 false,而非 0 表示 true,但是在 Java 里面没有这样的概念。

String

String 并不是一个基本数据类型,而属于一个引用数据类型,它是一个类,但是这个类的使用上非常特殊,下面先对这个类有

一个基本的认识。在程序之中使用""""声明的内容就表示字符串,而字符串对应的类型暂时简单理解为就是 String。String 并不是一个基本数据类型,而属于一个引用数据类型,它是一个类,但是这个类的使用上非常特殊,下面先对这个类有一个基本的认识。在程序之中使用""""声明的内容就表示字符串,而字符串对应的类型暂时简单理解为就是 String。需要明确的是 String 不是基本数据类型,可是在 String 里面可以使用"+"进行连接。

但是这个时候有一个问题出现了,数学中也有一个"+",那么这个结果什么呢?

public class TestDemo {

public static void main(String args[]) {

double numA = 10.2 ;

int numB = 20 ;

String str = " 计算结果:" + numA + numB ;

System.out.println(str) ; // 计算结果:10.220

}

}

这个时候发现使用"+"操作变为了字符串的连接处理。Java 对于字符串的操作有一个强制性的规定:基本数据类型如果不与字符串进行"+"操作,那么遵循低位向高位自动转换原则(int → double),但是如果有了字符串进行"+"处理,那么所有的数据类型必须变为 String 后再进行"+"(连接),而要想改变此问题,需要使用"()"改变执行的优先级;

public class TestDemo {

public static void main(String args[]) {

double numA = 10.2 ;

int numB = 20 ;

String str = "计算结果:" + (numA + numB) ;

System.out.println(str) ;

}

}

public class TestDemo {

public static void main(String args[]) {

double numA = 10.2 ;

int numB = 20 ;

System.out.println(numA + numB + "") ; // 30.2

System.out.println("" + numA + numB) ; // 10.220

System.out.println(numA + '' + numB) ;

}

}

在字符串定义之中还有一个关于转义字符的问题,有如下几个:Tab(\t)、"(\")、'(\')、\(\\)、换行(\n)。

测试转义字符

public class TestDemo {

public static void main(String args[]) {

String strA = "h\tello\n world" ;

System.out.println(strA) ;

String strB = "我说:\"聊五毛的\"、\\" ;

System.out.println(strB) ;

}

}

最新文章

  1. 家里蹲大学数学杂志 Charleton University Mathematics Journal 官方目录[共七卷493期,6055页]
  2. 当碰到unix纪元问题时strtotime怎么转时间戳(DateTime类的使用方法)
  3. Enable EPEL Repository for RHEL/CentOS 7.x/6.x/5.x
  4. JAVA Web 之 struts2文件上传下载演示(二)(转)
  5. Js,alert出现乱码问题,赶紧记下来,额~~~
  6. [ios2]Emoji表情符号兼容方案 【转】
  7. C#学习心得,记录学习
  8. iOS 之 CALayer与UIView的区别
  9. kali linux live(persistence)+PE+windows7安装多启动菜单优盘制作
  10. MYSQL更改root password时遇到Access Denied的解决办法
  11. 网络时钟服务器,NTP授时设备,北斗网络校时服务器,GPS时间同步器
  12. SpringCloud学习之SpringCloudBus
  13. 好久没有写BLOG了,人老了就开始变懒了【非技术】
  14. node_acl 路径通配
  15. jar包的MANIFEST.MF文件
  16. stm32库函数建工程和使用Keil自带库建工程有没有区别?发现了同样的程序在两种情况下keil自带库可以运行的情况,不知是什么原因
  17. 磁盘挂载方法 fdisk parted
  18. python3 元组tuple
  19. 如何保证Redis的高可用
  20. mysql操作命令梳理(5)-执行sql语句查询即mysql状态说明

热门文章

  1. 如何在Elasticsearch中安装中文分词器(IK)和拼音分词器?
  2. Comparing the contribution of NBA draft picks(转)
  3. 微信小程序 生命周期函数详解
  4. 错误处理1: D:\a1-C++\C++作业\第五次1.cpp undefined reference to `vtable for Shape'
  5. 使用DotNetty编写跨平台网络通信程序
  6. sql 经典面试题
  7. IE低版本兼容的感悟
  8. 包装FTPWebRequest类
  9. 用hmmlearn学习隐马尔科夫模型HMM
  10. 编译MapWinGis