黑马程序员-数据类型

java数据类型


Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。包括如下两大类数据类型:

基本数据类型:

整数:byte、short、int、long

浮点数:float、double

字符类型:char

布尔类型:boolean

引用数据类型:

类(class)

接口(interface)

数组( [ ] )

1.整数类型

在Java中,整数类型共有4种(包括byte、short、int、long),它们有固定的表述范围和字段长度,Java语言中,整数有三种表现形式,分别是:

  a. 十进制整数,如 120, -31, 0

  b.
八进制整数,要求以0开头(注意这是数字0,不是字母o),如:012,

  c. 十六进制整数,要求以0x开头(注意这是数字0,不是字母o),如:
0x12

Java语言中,默认的整数类型是int类型,声明long类型的时候,后面必须要加个l或者L。

有必要说明一下表数范围,以byte类型为例:由于byte是8位的,当最高位为符号位时,表示的最大整数就是二进制:0111-1111,也就是2^7-1=127。而能够表示的最小负数的二进制表示形式为:1111-1111,按理说应该为-127。但是我们都知道byte占8位。则不同的组合为2的8次方等于256,也就是byte最多可以表示256个不同的数,但是这里0与-0表示一样的数了,所以就用-0的二进制补码表示到-128里面去了。

2.浮点类型


与整数类型一样,同样有固定的表述范围和字段长度,
Java语言中,浮点类型有两种表现形式,分别是:

    a. 十进制数形式, 如3.14

    b. 科学计数法,如,3.14e2,
3.14e-2, -3.14E2

Java语言中,默认的浮点数类型是double,声明float类型的时候,后面必须添加字母f或者F,如3.14F,3.14f。例如:float
a=5.6f;(直接将5.6给float赋值是错误的,5.6默认的类型为double。而如果将float
a=5;这样复制后,编译就不会报错,只是将5看作默认的double类型,打印输出值为5.0。)

其实在实际的应用中,如果要进行精确的小数计算或者是大数计算,建议使用java.math.BigDecimal类。

3. 字符类型

字符类型是用‘‘单引号括起来的单个字符,例如char c = ‘w‘; char a =
‘中‘,可以看到Java中的char类型是可以表示中文字符的;Java字符采用Unicode(全球语言统一编码)编码,每个字符占两个字节。
Java中允许使用转义字符‘\‘将其后面的字符转换成其他含义, 如:

char c = ‘\n‘;  //表示换行

4.布尔类型

boolean类型的值只有两种:true,false。boolean类型不可以转换为其他的数据类型(所以有过C语言编程基础的人可能认为1也能在Java中表示为true,这是错误的)。

5.数据所占空间

基本数据类型,是比较简单地表达一些基本的数据类型。每种数据类型在内存中占的空间不一样

?  byte(字节型):计算机中1字节一般来说占8位。

?  char(字符型):占2字节,也就是16位。

?  short(短整型):占2字节,也就是16位。

?  int(整型):占4字节,也就是32位。

?  long(长整型):占8字节,也就是64位。

?  float(单精度实型):小数点后保留7位有效数字,占32位。

?  double(双精度实型):小数点后保留15位有效数字,占64位。

?  boolean(字节型):占1字节,8位。

6.数据类型转换

1)从低精度向高精度转换
byte
、short、int、long、float、double、char
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换

2)基本类型向类类型转换

正向转换:通过类包装器来new出一个新的类类型的变量
Integer
a= new Integer(2);
反向转换:通过类包装器来转换
int b=a.intValue();

3)类类型向字符串转换

正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可
反向转换:通过类包装器new出一个新的类类型的变量

4)基本类型向字符串的转换
正向转换:
如:int a=12;
String
b;b=a+””;

反向转换:
通过类包装器
①字符串—>int:

int
i=Integer.valueOf(“123”).intValue()
说明:上例是将一个字符串转化成一个Integer对象,然后再调用这个对象的intValue()方法返回其对应的int数值。
②字符串—>float:

float
f=Float.valueOf(“123”).floatValue()
说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。

字符串—>boolean:

boolean
b=Boolean.valueOf(“123”).booleanValue()
说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
④字符串—>double:

double
d=Double.valueOf(“123”).doubleValue()
说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
⑤字符串—>long

long
l=Long.valueOf(“123”).longValue()
说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
⑥字符串—>char

char=Character.valueOf(“123”).charValue()
说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。

这个例子中说明数据类型中的部分问题:


 1 package com.itheima;
2
3 import java.util.Scanner;
4
5 /**
6 * 这个程序解决的问题是:从键盘接受一个数字,列出该数字的中文表示格式,例如:键盘输入123,打印出一二三;键盘输入3103,打印出三一零三。
7 *
8 * 其中比较关键的问题是数据类型间的转换。
9 ①从键盘中输入的数字,被接受后,是以String类型保存的,
10 ②方法split()处理后得到是string类型的数组。而toCharArray()方法得到是char类型数组。两者的结果不是相同的。
11 ③在比较中,equals()方法和== 的区别简单的理解是:==比较的是2个对象的地址,而equals比较的是2个对象的内容。String类型的1和int类型的1是相等的,
12 ④switch中,如:
13 switch(A){
14 case B;
15 }
16 A部分中的值必须是int型的,或者是能够自动进行饮试转换成int型的表达式。也就是说A部分可以是byte/short/char/int型的。
17 其次要强调的是该程序中B部分的值必须是单个byte/short/char/int型的值,或者是final型的变量。但是final型的变量也是有要求的,也即是它必须是编译时的常量,
18 所以总结case后的值可以是常数值或final型的值
19 */
20 public class Test1 {
21
22 final static String[] digital = { ".", "-", "0", "1", "2", "3", "4", "5",
23 "6", "7", "8", "9" }; // 注意这里定义的是字符串类型的数字,也就是其中的0、1、2等数字是字符串类型,而不是整数类型
24 final static String[] china = { "点", "负", "零", "一", "二", "三", "四", "五",
25 "六", "七", "八", "九" }; // 定义汉字的数组,也是string类型的
26
27 public static void main(String[] args) {
28 Scanner scanner = new Scanner(System.in); // 定义 输入对象
29 for (int a = 0; a < 100; a++) { // 控制循环,使程序每次运行,最多可以输入100次
30 System.out.println("请输入一个数字(包括负数和小数),或者输入‘close‘结束程序"); // 打印 提示
31 String num = scanner.next(); // 获取输入的字符,是符串类型
32 if (num.equals("close") || a == 99) // 控制程序结束,当输入“close”或达到最大输入次数时结束程序,并提示程序结束
33 {
34 System.out.println("程序已结束!");
35 break;
36 }
37 if (!num.matches("(-?)[0-9]+(.[0-9]+)?")) { // 判断输入的字符串是否由0-9的数字(包括负数和小数)组成
38 //
39 System.out.println("输入错误!请输入正确格式的数字!" + "\n");
40 } else {
41 System.out.println("你输入的数字是:" + chang(num) + "\n");// 如果是
42 // 调用转换方法,将其按要求专函
43 }
44 }
45 }
46
47 /*
48 * 将阿拉伯数字转化为汉语数字的方法 str 输入阿拉伯数字的字符串 str2 返回的汉字字符串
49 */
50 private static String chang(String str) {
51 String[] c = str.split(""); // 将输入的字符串转换为字符串数组
52 String str2 = new String(); // 定义一个新的字符串,接收转换后的字符
53 for (int i = 0; i < c.length; i++) { // 循环转换字符串数组中的元素
54 if (!c[i].equals("") && c[i] != null) { // 去掉为空的情况,
55 for (int j = 0; j < digital.length; j++) {
56 if (c[i].equals(digital[j])) { // 将 元素与 定义好的 阿拉伯数字数组中的所有进行比较
57 str2 += china[j]; // 找到其对应的阿拉伯数字,就在 str2 后加入对应的汉语数字
58 }
59 }
60 }
61 }
62 return str2; // 返回转换完成的字符串
63
64 }
65
66 }

黑马程序员-数据类型

时间: 2024-10-10 01:37:45

黑马程序员-数据类型的相关文章

黑马程序员——数据类型、常量、变量

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.数据类型 在C语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类. 二.常量 1.概念 在程序执行过程中,其值不发生改变的量称为常量. 2.分类 1)整型常量:即(int)整数,如2,4,56等等. 2)浮点型常量:浮点型常量分为double和float两种数据类型. double:双精度浮点型,比如3.14.-5.9,0.0等. float:单精度浮点型,比dou

黑马程序员----数据类型总结

一.基本数据类型 1.int long int == long   8个字节   %ld long long int == long long   8个字节  %lld short int == short    8个字节   %d  %i unsigned int == unsigned  4个字节   %zd signed int == signed . int   4个字节  %d  %i 2.float\double float    4个字节    %f double   8个字节  

黑马程序员-c语言基础:各种数据类型的输出占位符

c语言中的输出操作相对java来说是比较麻烦的,每种数据类型的输出都有各自的占位符: 下面是各种数据类型的输出占位符: short/int : %d int a = 1; printf("这个整数是:%d", a); long: %ld; (long 是int得修饰,不能算是一种单独的数据类型,只是比int多了四个字节的存储空间) long long: %lld char : %c float/double : %f  float默认是6位小数输出:可以在%f中控制:例如:%.2f:输

黑马程序员_01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)

------- android培训.java培训.期待与您交流! ---------- Java语言主要由5中符号组成 标识符:数字.字母.美元符.下划线(注意不能数字开头) 关键字:goto和const保留了它们,但是Java没有使用. 运算符:注意运算符优先级(左结合和右结合要注意) 分隔符:注意+号可以分割字符串. 注释:三种注释. 数据类型与变量 常量: 整型 浮点型 字符:注意后面跟三个八进制(\ddd)和 四位unicode码(\u8bf7) (不区分大小写) 字符串 布尔型 变量:

【黑马程序员】————数据类型总结

一.基本数据类型1.int1> long int.long:8个字节 %ld2> short int.short:2个字节 %d %i3> unsigned int.unsigned:4个字节 %zd 4> signed int.signed.int:4个字节 %d %i 2.float\double1> float :4个字节 %f2> double:8个字节 %f 3.char1> 1个字节 %c %d2> char类型保存在内存中的是它的ASCII值

黑马程序员------C 语言学习笔记--- C语言数据类型

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 1.1     C语言数据类型 01 整型数据 l 整型常量 十进制数:以非0数字开头.八进制:以数字0开头.十六进制:以0x或者0X开头 l 整型变量 int , long int,  short int, #include

黑马程序员------IO(五)

黑马程序员------IO(五) 1.1  操作对象(示例1)ObjectInputStream与ObjectOutputStream 被操作的对象需要实现Serializable. Serializable:用于给被序列化的类加入ID号,用于判断类和对象是否是同一个版本 类通过实现java.io.Serializable接口以启用序列化功能,Serializable只是一个标记接口. 1 示例1: 2 import java.io.*; 3 4 class ObjectStreamDemo 5

黑马程序员——Java基础---IO(下)

黑马程序员——Java基础---IO(下) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供了File类.properties类.打印流.序列流等和输入输出相关的类,它们能够帮助我们更好的处理信息.下面将对它们进行简单的介绍. 一.正

黑马程序员_API

------- android培训.java培训.期待与您交流! ---------- ======================API========================================= 看api的步骤: 1.看类的说明.其所属的包以及出现的版本. 2.看其构造函数. 3.看普通的方法.看时注意参数,和返回值类型. Object类 1. private static native void registerNatives (); 见到本地关键字修饰的方法,这个方