JavaSE 数据类型以及基本转化与包装
数据类型.
先简单介绍java中的语法可以速速过一遍
1.基本类型(八个)
数值型
整型类型
byte型:1字节 8bit位 第一位是符号位
byte a = 127;
short型:2字节
short b = 32767;
int 型:4字节
int c = 123;
int c = 0b123;//二进制
int c = 0123;//八进制
int c = 0x123;//十六进制
long型:8字节
long d = 123l;
long d = 123L;//数字后缀L或l
0b或0B开头数字 为二进制
0开头数字为 八进制
0x或0X开头为16进制
浮点类型
float :4字节
单精度,尾数可以精确到7位有效数字
float e = 123.4f//数字后缀加f或F
double: 8字节
双精度,精度是float的两倍。通常采用此类型。
double f = 123.4
%%java浮点型默认为double类型%%
十进制数形式,例如:
3.14 314.0
科学记数法形式,如
3.14e2
3.14E2
字符型 (char)2字节
使用了Unicode 编码 兼容了Ascll码
可以参与算术运算,本质是使用了Unicode编码表中对应的10进制编号来进行计算
逻辑型(boolean)
ture
false
2.引用类型
String类型(字符串)(相关API会在API.md文件里面介绍)
String是一个类,String的变量是对象的管理者而非所有者
'+'相当于字符串连接符
String s = "abcd";
1.任意八种基本数据类型的数据与String类型只能进行连接“+”运算(字符串连接),且结果一定也是String类型
2.String类型不能转为其他的基本类型
String s = new String("a string");//创建一个String的对象,用“a string”初始化这个对象
String a = "hello";
String b = "world";
String c = a + b;
String d = a + b + 12;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
运行结果:
```java
hello
world
helloworld
helloworld12
Process finished with exit code 0
输入字符串
in.next();读入一个单词,单词标志是空格(包括空格、tap和换行)
in.nextLine();读入一整行
比较两个String
if(input == "bye"){//比较是否同一个
····
}
if(input.equals("bye")){//比较内容是否相同
····
}
Strings应该用.equals 来比较
接口(interface)(后面会介绍)
数组([])(后面专门介绍)
包裹类型(特殊的数据类型)
- 它用于将基本数据类型包装成对象
基本数据类型的转换
- 八种基本类型除了boolean类型以外,其他七种类型之间可以相互转化
转换规则:
1.默认转换
将取值范围小的的类型自动提升为取值范围大的类型
(byte,char,short(byte->short))->(int)->(long)->(float)->(double)
4个字节float比8个字节long取值范围要大
原因: 浮点数在存储时结构与整数计算方式不同
2.强制转换
容量大的转换为容量小的
格式 : (强制转换的类型) 变量名
int a =258;
byte b = (byte)a;
注:有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一 种数据类型,然后再进行计算会有精度损失
基本数据类型的包装类
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面
向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设
计类时为每个基本数据类型设计了一个对应的类进表示,这样八个和基
本数据类型对应的类统称为包装类
基本数据类型 | 包装类(包裹类型) |
---|---|
byte | Byte |
short | Short |
char | Character |
int | I nteger |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
例如:Integer
声明
Integer a=new Integer(12);
Integer b=new Integer(10);
调用非静态方法
int compareTo();
boolean equals();
//调用非静态方法
System.out.println(a.compareTo(b));//前面大返回1,后面大返回-1,一样大返回0;
System.out.println(a.equals(b));//比较a与b内容是否相同 与"=="要区分 返回一个boolean类型
System.out.println(a==b);//比较a与b是否指向一个内容
//.....
调用静态方法
Integer valueOf
int compare(int a,int b)
Integer.parseInt(String str,int radix);
//调用静态方法
Integer c=Integer.valueOf(12);//调用静态方法,返回一个Integer类型变量给C
Integer d=Integer.valueOf("10");//调用静态方法,把字符串类型(必须是数字)转换为Integer返回一个Integer类型变量
Integer.parseInt(String str,int radix);//把radix进制对应的str转化为十进制
System.out.println(Integer.compare(13,10));//前面大返回1,后面大返回-1,一样大返回0;
System.out.println(Integer.max(13,10));//返回较大的数值
System.out.println(Integer.valueOf(10));//返回的是引用类型
装箱和拆箱
- 装箱:
将基本类型可以自动转换为包装类型
Integer a=10;//默认调用Integer.valueOf(a)把10转化为引用类型即Integer类型
- 拆箱:
将包装类型转化为基本类型
int c=a.intValue();//拆箱
int c=a;//自动拆箱
源码:
public static Integer valueOf(int i) {//low:-128;high:127
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
Integer a=10;//默认调用Integer.valueOf(a)
Integer a=10;
Integer b=10;
System.out.println(a.equals(b));//结果为true
System.out.println(a==b);//结果也为true
Integer c=128;
Integer d=128;
System.out.println(c==d);//结果为false
System.out.println(c.equals(d));//结果为true
由源代码可知,当在方法内部对 -128~127之间进行缓存(数组),在此期间的自动装箱,不会创建新的Integer对象,直接从中获得,(因为a与b传过去对应i的参数都为10,则返回的是同一个对象地址的引用),而超出此区间的每次都会返回新的对象(所以c和d虽然值相等但是返回的都是一个新的对象地址,所有c==d结果为false)
JavaSE 数据类型以及基本转化与包装的更多相关文章
- 简单JavaSE数据类型入门
新的一节学习了JavaSE,今天主要来说一下Java的数据类型及其输出,借用Xmind,可以生动形象的向大家来解释Java的数据类型: 其中数值整数型举例: public class A02{ pub ...
- Javascript基础系列之(三)数据类型 (类型转化)
所有语言都有类型转化的能力,javascript也不例外,它也为开发者提供了大量的类型转化访法,通过全局函数,可以实现更为复杂的数据类型. var a = 3; var b = a + 3; var ...
- 简单讨论数据类型(byte)强制转化后的数值变化规律
package com.wangzhu.datatype; /** * Java基本数据类型练习 * * @ClassName: DataTypes * @Description: TODO * @a ...
- JavaSE| 数据类型| 运算符| 进制与补码反码等
JavaSE JavaSE是学习JavaWeb.JavaEE以及Android开发的基础 边听边思考边做“笔记” 不要完全依赖书和视频: 捷径:敲.狂敲: 规范:加注释: 难点,不懂的记录下时间再回头 ...
- python中的数据类型与json的数据类型之间的转化
什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...
- ECMAScript1.4 对象 | 简单数据类型与复杂数据类型 | 内置对象 | 基本包装类型 | String
对象 函数和对象的区别: 函数:封装代码 对象:封装属性和方法 创建对象的方法: 1,对象字面量{} // 模拟创建一只dog var dog = { // 属性 name: 'puppy', age ...
- javaSe数据类型
在学完了java程序的结构以及注释后呢按照一般的教程我们应该学点什么呢? 没错就是变量和数据类型[其实我的内心是拒绝的,又是无聊的一大堆,不仅无聊,还得掌握] 好了首先介绍什么是变量: 变量:变量 ...
- Java_字符类(Character、String、StringBuffer)_char是基本数据类型,Character是其包装类型。
在java中有三个类负责对字符的操作:Character.String.StringBuffer.其中,Character类是对单个字符进行操作,String是对一个字符序列的操作,Stri ...
- Integer缓存机制-基本数据类型和包装类型-自动拆装箱
Integer缓存机制 总结: 1.jdk1.5对Integer新增了缓存机制,范围在-128-127(这个范围的整数值使用频率最高)内的自动装箱返回的是缓存对象,不会new新的对象,所以只要在缓存范 ...
- 一、java基础-数据类型_数据类型转化_字符编码_转义字符
1.Java 支持的8种基本数据类型: java的四种整数数据类型:byte 1 short 2 int4 long8 byte 8位带符号整数 -128到127之 ...
随机推荐
- vue项目如何部署?有遇到布署服务器后刷新404问题吗?
一.如何部署 前后端分离开发模式下,前后端是独立布署的,前端只需要将最后的构建物上传至目标服务器的web容器指定的静态目录下即可 我们知道vue项目在构建后,是生成一系列的静态文件 常规布署我们只需要 ...
- Spring 源码阅读(二)IoC 容器初始化以及 BeanFactory 创建和 BeanDefinition 加载过程
相关代码提交记录:https://github.com/linweiwang/spring-framework-5.3.33 IoC 容器三种启动方式 XML JavaSE: ApplicationC ...
- ping的常用方法
ping的常用方法 ping +ip tcping +ip+端口号(例如 tcping 127.0.0.1 8080) telnet +ip+端口号 nc -nzv +ip+端口号(linux用)
- 力扣601(MySQL)-体育馆的人的流量(困难)
题目: 表:Stadium 编写一个 SQL 查询以找出每行的人数大于或等于 100 且 id 连续的三行或更多行记录. 返回按 visit_date 升序排列 的结果表. 查询结果格式如下所示 示例 ...
- 力扣24(java&python)-两两交换链表中的节点(中等)
题目: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换) 示例 1: 输入:head = [1,2,3,4] 输出:[ ...
- 牛客网-SQL专项训练9
①假设有选课表course_relation(student_id, course_id),其中student_id表示学号,course_id表示课程编号,如果小易现在想获取每个学生所选课程的个数信 ...
- 项目实战总结以及接入U-APM
简介: 导致 App 性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线.系统函数.编程范式.数据结构等导致的.即便是较有经验的程序员,也很难在开发时就能避免所有导致 ...
- [Kali] Kali 信息收集
网络空间测绘. 网络空间测绘是2016年出现的一个概念,主要指用一些技术方法,来探测全球互联网空间上的节点分布情况和网络关系索引,构建全球互联网图谱的一种方法. nmap端口扫描. 子域名爆破. ...
- 使用ssh连接远程仓库的方法(github)
使用ssh连接远程仓库的方法 但是当我登录虚拟机想提交csapp的代码时,我发现需要验证我的账号密码,感觉每次提交都要输入这个很麻烦.然后就在网上查询了下为何提交代码需要输入账号密码. 使用 HTTP ...
- WPF 自己封装 Skia 差量绘制控件
使用 Skia 能做到在多个不同的平台使用相同的一套 API 绘制出相同界面效果的图片,可以将图片绘制到应用程序的渲染显示里面.在 WPF 中最稳的方法就是通过 WriteableBitmap 作为承 ...