当前位置: 首页 > article >正文

Java 输出机制 数据类型 基本数据类型转换 基本数据类型和String类型的转换

目录

一、输出机制

1.print和println的差别

2.可接收不同类型参数

3.输出函数中 + 符号的使用

二、数据类型

1.整型类型

2.浮点类型

3.字符类型

三、基本数据类型转换

1.自动类型转换

2.强制类型转换 

3.练习题

四、基本数据类型和String类型的转换

1.基本类型转String类型

2.String类型转基本类型


一、输出机制

1.print和println的差别

将接收到的内容转化为成字符串形式输出,输出方式不会换行

System.out.print();

 将接收到的内容转化为成字符串形式输出,输出方式自动换行

System.out.println();

2.可接收不同类型参数

类似C++的cout内置对象,Java也使用了重载的方式来接受不同类型的参数,例如字符串、整数、浮点数等。当调用System.out.println()函数是,Java会根据传递的参数类型自动选择合适的函数版本。

代码如下:

public class test {
    public static void main(String[] args) {
        int i = 10;
        System.out.println(i);// 接收整型
        String message = "Hello World!\n";// 接收字符串类型
        System.out.println(message);
    }
}

输出结果:

10
Hello World!

3.输出函数中 + 符号的使用

将数字转换为字符串形式然后输出

System.out.println(100 + 98); // 198
System.out.println("100" + 98);// 10098
System.out.println(100 + 3 + "hello");// 103hello
System.out.println("hello" + 100 + 3);// hello1003

二、数据类型

Java没有显式指针,Java中的引用类型是一种特殊的数据类型,它存储了一个对象的地址,而不是对象本身。因此,Java中的引用类型可以看作是指向对象的指针与C++不同的是,Java中的引用类型不能进行指针运算,也不能直接访问对象的内存地址。

1.整型类型

类型占用存储空间范围
byte [字节]1字节-128 ~ 127
short [短整型]2字节-(2^15) ~ 2^15 - 1
int [整型]4字节-(2^31) ~ 231 - 1
long [长整型]8字节-2^63 ~ 2^63 - 1

2.浮点类型

类型占用存储空间范围
float [单精度浮点数]4字节-3.403E38 ~ 3.403E38
double [双精度浮点数]8字节-1.798E308 ~ 1.798E308

注意:

1.Java 的浮点型常量(具体值)默认为double型,声明float型常量,须后加 'f' 或 'F' 。
 

2.浮点型常量有两种表示形式

十进制数形式:如:5.12           512.0f          .512(必须有小数点)

科学计数法形式:如: 5.12e2 [5.12*10的2次方]     5.12E-2 [5.12*10的-2次方]

3.通常情况下,应该使用double型,因为它比float型更精确。

[举例说明]double num9 = 1234567851;

                float num10 = 2.1234567851F;

4.浮点数使用陷阱: 2.7 和 8.1 / 3 比较

double num7 = 2.7;
double num8 = 8.1 / 3;
if(Math.abs(num7 - num8) < 0.00001)
{
    System.out.println("相等~~");
}

tip: 8.1 / 3 是接近 2.7 的一个小数,而不是 2.7

3.字符类型

Java 的 char 类型和 C++ 的 char 类型之间的差异

  1. 大小:Java 中的 char 类型是 16 位无符号整数,而 C++ 中的 char 类型通常是 8位有符号整数(尽管它的确被定义为一个字节)。

  2. 范围:Java 中的 char 类型可以表示从 '\u0000' 到 '\uffff' 的 Unicode 字符,而 C++ 中的 char 类型可以表示从 0 到 255 的 ASCII 字符。

  3. 字面量:在 Java 中,字符字面量用单引号表示,例如 'a' 或 '\u0061'。在 C++ 中,字符字面量用单引号表示,例如 'a' 或 97(即 ASCII 码)。

  4. Unicode 支持:Java 中的 char 类型可以直接表示 Unicode 字符,而 C++ 中的 char 类型需要使用 Unicode 转义序列(如 '\u0061')来表示 Unicode 字符。

1.可以直接给char赋一个整数,然后输出时,会按照对应的unicode 字符输出。

例如:char c3 = 97; c3输出为字符a

2.Java中还允许使用转义字符“’来将其后的字符转变为特殊字符型常量。

例如: char c3 = '\n';
3.在java中,char的本质是一个整数,在输出时,是unicode码对应的字符。

转换工具

4.char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码。

(与C++相同)

扩展】字符编码表

ASCII

ASCII 编码表 一个字节表示,一个128 个字符,实际上一个字节可以表示256个字符,只用128个。

【ASCII码】ASCII码一共规定了128个字符的编码,只占用了一个字节的后面7位,最前面的1位统一规定为0。

特别提示:一个字节可以表示256个学符,ASCII码只用了128个字符。
【缺点】不能表示所有字符。

Unicode

Unicode 编码表 固定大小的编码 使用两个字节来表示字符,字母和汉字统一都是占用两个字节这样浪费空间。

【好处】一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,使用 Unicode 没有乱码的问题。

【缺点】一个英文字母和一个汉字都占用2个字节,这对于存储空间来说是浪费的。
2的16次方是 65536,所以最多编码是65536个字符。

编码0-127的字符与ASCII的编码一样

比如:a' 在ASCII码是 0x61,在 unicode码是0x0061,都对应97。因此Unicode码兼容 ASCII码

utf-8

编码表,大小可变的编码 字母使用1个字节,汉字使用3个字节。

  1. UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式(改进)
  2. UTF-8 是一种变长的编码方式。它可以使用 1-6 个字节表示一个符号,根据不同的符号而变化字节长度。
  3. 使用 大小可变的编码 字母占1个字节,汉字占3个字节3

GBK

可以表示汉字,而且范围广,字母使用1个字节,汉字2个字节。

gb2312

可以表示汉字,gb2312 < gbk。

big5 码(繁体中文,台湾,香港)

三、基本数据类型转换

1.自动类型转换

相等于C++的隐式类型转换(通过临时对象进行)

例如:

int a = 'c';
double d = 80;

注意

  1. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
  2. 当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换
  3. (byte, short) 和 char 之间不会相互自动转换。
  4. byte, short, char他们三者可以计算,在计算时首先转换为int类型
  5. boolean不参与转换。
  6. 自动提升原则:表达式结果的类型自动提升为操作数中最大的类型。

2.强制类型转换 

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 ( ),但可能造成 精度降低或溢出。

 【注意

1.当进行数据的大小  从 大————>小,就需要使用到强制转换。

2.强转符号只针对于最近的操作数有效,往往使用小括号提升优先级。
3.char类型可以保存 int 的常量值,但不能保存int的变量值,需要强转。
 

char c1 = 100; // ok
int m = 100; // ok
char c2 = m; // 错误
char c3 = (char)m; // ok
System.out.println(c3); // 100对应的字符

4.byte和short, char 类型在进行运算时,当做int类型处理。

演示如下:

int c = (int)7.98;
System.out.print(c);

输出为:

7

3.练习题

四、基本数据类型和String类型的转换

1.基本类型转String类型

语法:基本类型的值 + " "

演示如下:

//...
int n1 = 100;
float n2 = 1.1f;
double n3 = 3.4;
boolean n4 = true;
String str1 = n1 + " ";
String str2 = n2 + " ";
String str3 = n3 + " ";
String str4 = n4 + " ";
System.out.println(str1 + " " + str2 + " " + str3 + " " + str4);
//...

输出结果:

100  1.1  3.4  true

2.String类型转基本类型

语法:XX.parseXX("基本类型的值");

演示:

int n1 = Integer.parseInt("123");
double n2 = Double.parseDouble("123.1");
float n3 = Float.parseFloat("123.45");
short n4 = Short.parseShort("12");
long n5 = Long.parseLong("12345");
boolean n6 = Boolean.parseBoolean("true");
Byte n7 = Byte.parseByte("12");


http://www.kler.cn/a/15250.html

相关文章:

  • ### 哋它亢在5G基站中的应用:新兴技术与未来通信的融合
  • js实现导航栏鼠标移入时,下划线跟随鼠标滑动
  • hadoop+wsl 10.255.255.254,BlockMissingException: Could not obtain block: 踩坑
  • MySQL 怎么不丢数据(关于开启双1配置)
  • 深挖C++赋值
  • IDEA优雅debug
  • 用LDA主题模型并进行可视化
  • Vivado增量编译:加速FPGA设计实现的利器
  • Qt连接MySql数据库(本地和远程数据库均可)
  • 【细读Spring Boot源码】重中之重refresh()
  • 用友自主研发企业商用版TimensionDB时序数据库重磅发布!
  • 【算法】【算法杂谈】判断点是否在三角形内部(面积法和向量法)
  • 西门子S7-1500与FANUC机器人进行EtherNetIP通信的具体方法示例
  • 从0搭建Vue3组件库(九):VitePress 搭建部署组件库文档
  • 【华为OD机试真题】简单的解压缩算法(javapython) 100%通过率 超详细代码注释
  • 大数据Doris(三):Apache Doris分布式部署准备工作
  • <网络编程>网络套接字
  • Android那两个你碰不到但是很重要的类之ViewRootImpl
  • ToLua框架
  • 全国计算机等级三级网络技术试卷详解(二)
  • taro之项目初始化模板
  • JavaScript中的数据结构和算法
  • 一个朋友弄来的,太牛了,特别是后面内容,不看不知道,一看吓一跳,电话,热线
  • Leetcodes刷题之删除链表的倒数N个结点和删除链表的中间的结点
  • SD卡变成RAW格式怎么办?SD卡RAW格式的解决办法
  • HTML + CSS + JS 利用邮编查询 API 实现邮编查询工具