javaSE学习-1-数据类型与运算符

目录

字面常量

数据类型

int

Long

short

Byte

float

double

char

boolean

类型转换

强转

自动类型转换(隐式)

字符串类型

字符串和整形数字之间进行转换


字面常量

比如 System.Out.println("Hello World") 语句,不论程序何时运行,输出的都是 Hello
World ,其实 "Hello World" 就是字面常量
常量即程序运行期间,固定不变的量称为常量 ,比如:一个礼拜七天,一年 12 个月等。
1. 字符串常量:由""括起来的,比如“12345”“hello”你好
2. 整形常量:程序中直接写的数字(注意没有小数点),比如:1001000
3. 浮点数常量:程序中直接写的小数,比如:3.140.49
4. 字符常量:由 单引号 括起来的当个字符,比如:‘A’‘1’
5. 布尔常量:只有两种truefalse
6. 空常量:null(后面了讲)
public class Main {public static void main(String[] args) {System.out.println("HelloWorld");System.out.println("A");System.out.println(100);System.out.println(3.14);System.out.println(true);System.out.println(false);}
}

数据类型

Java 中数据类型主要分为两类: 基本数据类型 引用数据类型
基本数据类型有四类八种
1. 四类:整型、浮点型、字符型以及布尔型
2. 八种:
整数型: byte short int long
小数型: float double
字符型: char
布尔类型: Boolean
注意: 
不论是在 16 位系统还是 32 位系统, int都占用4个字节,long都占8个字节
整形和浮点型都是带有符号的
整型默认为 int 型,浮点型默认为 double
符串属于引用类型 后面会讲到

int

在idea中输入main回车直接出现

输入sout回车

也可以变量名加"."加sout

ps:有没有人知道怎么粘贴图片的时候默认不加水印 每一个图片都加水印很影响观感

在java中,int类型长度为四个字节,4Byte = 8*4bit = 32,就是32位,因为java中,数据类型都是有符号数,那么就是1位符号位, 31位数值位 0表示正数,1表示负数

最大: 01111111 11111111 11111111 11111111

最小: 1000000 00000000 0000000 0000000

因为存的是补码,以上是附属最小值

下面这个是附属最小值-1

11111111 11111111 11111111 11111111

    public static void main(String[] args) {int a = 10;System.out.println(a);System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);}
10
2147483647
-2147483648

Integer是整数的意思, 在java中叫做包装类型, 输入Integer.可以找到int类型的最大值和最小值

或者按住ctrl,mac上是command, 单击integer, 可以找到

Long

long占8位

long a = 10L;System.out.println(a);

赋值long类型变量时,需要加"L", 不推荐加小写的'l', 因为会认成1

short

short类型, 占2个字节, 有16位

取值范围是-2^15到2^15-1

short a = 19;System.out.println(a);System.out.println(Short.MIN_VALUE);System.out.println(Short.MAX_VALUE);
19
-32768
32767

Byte

只有一个字节

8个比特位

-2^7到2^7-1

byte a = 10;System.out.println(a);System.out.println(Byte.MIN_VALUE);System.out.println(Byte.MAX_VALUE);
10
-128
127

赋值为200时,发现报错,并不会直接像c语言那样溢出, 而是报错,可见java是非常严谨的

以上是整数型,接下来是小数型

float

赋值时需要在屁股加个f, 不然编译器会认为是double类型, 会报错

加了f, 才会认为是float的数据

包装类型是大写的F开头的Float

float a = 12.5f;System.out.println(a);System.out.println(Float.MIN_VALUE);System.out.println(Float.MAX_VALUE);
12.5
1.4E-45
3.4028235E38

注意, ctrl+D或者mac上command+D可以快捷复制一行内容到下一行,并且不占用剪切板

double

double a = 10.5;System.out.println(a);System.out.println(Double.MIN_VALUE);System.out.println(Double.MAX_VALUE);

赋值的时候可以不用加d

10.5
4.9E-324
1.7976931348623157E308

需要注意的是, 

System.out.println(1/2);

不会输出0.5而是0

想要输出0.5应该使用

System.out.println(1.0/2);

另外一个需要注意的是,小数没有非常精确的值

double dd = 1.1;System.out.println(dd*dd);

理论上是1.21

实际上是

1.2100000000000002

接下来是字符类型

char

占用两个字节

char ch = 'a';System.out.println(ch);
a

一个汉字占用两个字节

那么 字符类型可以存储汉族

因为java使用的是Unicode编码字符集,包含了许多字符

c语言使用的ASCLL码表示的少得多, 这点需要适应

char ch = '赣';
注意事项 :
1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值
执行 javac 的时候可能出现以下错误 :
此时我们在执行 javac 时加上 -encoding UTF-8 选项即可
javac -encoding UTF-8 Test.java
char 的包装类型为 Character
接下来是Boolean类型

boolean

boolean a = true;System.out.println(a);

java中boolean类型只有两个值, 没有0表示假, 非零表示真

并且 boolean类型没有明确的大小

但是 有些书会说,占用一个字节, 有些说占一个bit位

JVM,Java虚拟机没有规定

Java 虚拟机规范中,并没有明确规定 boolean 占几个字节,也没有专门用来处理 boolean 的字节码指令,在 Oracle公司的虚拟机实现中, boolean 1 个字节

类型转换

int a = 10;long b = 100L;b = a; // 可以通过编译a = b; // 编译失败
不允许把8个字节放进4个字节
不能大转小,会发生截断
只能小转大

强转

int a = 10;long b = 100L;a = (int)b;

int到long,强转,强制类型转换,编译器不管了,这种是等于自己按手印, 编译器不管了

自动类型转换(隐式)

自动类型转换即: 代码不需要经过任何处理,在代码编译时,编译器会自动进行处理 。特点: 数据范围小的转为数 据范围大的时会自动进行
System.out.println(1024); // 整型默认情况下是intSystem.out.println(3.14); // 浮点型默认情况下是double
​
int a = 100;
long b = 10L;
b = a; // a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
a = b; // 编译报错,long的范围比int范围大,会有数据丢失,不安全​

隐式类型转换大多存在于小类型到大类型

float f = 3.14F;
double d = 5.12;
d = f; // 编译器会将f转换为double,然后进行赋值
f = d; // double表示数据范围大,直接将float交给double会有数据丢失,不安全
byte b1 = 100; // 编译通过,100没有超过byte的范围,编译器隐式将100转换为byte
byte b2 = 257; // 编译失败,257超过了byte的数据范围,有数据丢失

int a = 10;
long b = 10L;
int c = a + b;

报错,解决方法是把a+b的值强制转换为int

int c = (int)(a + b);

还有一个解决方法,是推荐的方法, 使用类型提升,小类型提升为大类型

byte b1 = 10;byte b2 = 20;byte b3 = b1 + b2;

会报错,原因是小于四个字节的,会提升为四个字节的进行运算

因此b3只能使用int赋值了

因为计算机是以4个字节为单位从内存中来存储和读取内容的

类型提升小结 :
1. 不同类型的数据混合运算 , 范围小的会提升成范围大的 .
2. 对于 short, byte 这种比 4 个字节小的类型 , 会先提升成 4 个字节的 int , 再运算 .

字符串类型

这里先讲解一下字符串类型, 因为很早就会接触到
String为字符串类型, 属于引用类型, 因为String类型变量存储的是首元素的地址
因为是引用类型,所以首字母是大写 String
并且 java中
字符串没有以'\0'结尾的说法
String str1 = "hello ";String str2 = "world";String str3 = str1 + str2;System.out.println(str3);

字符串的拼接十分方便

int a = 10;
System.out.println("a = " + a);

java当中的字符串 和其他数据类型进行 + 操作的时候 就是拼接

int a = 10;int b = 20;System.out.println("a = " + a + b);
30==a+b

那这个输出多少呢

a = 1020

这是因为

"a = " + a + b先与"a = " + a进行运算了, 得到a = 10, 然后再与b拼接

那怎么输出a+b呢

 System.out.println("a = " +( a + b));

System.out.println(a+b+"==a+b");

这个段代码呢

从左到右计算的

输出

字符串和整形数字之间进行转换

在有些情况下,需要将字符串和整形数字之间进行转换:

String str = "123";int val = Integer.parseInt(str);System.out.println(val);

在idea中双击shift就能搜索到Integer方法, 找到他的源码

点击structure就能找到

那么怎么从int转回字符串呢

String str = "123";int val = Integer.parseInt(str);System.out.println(val);String str2 = String.valueOf(val);System.out.println(str2);String str3 = val + "";System.out.println(str3);String str4 = Integer.toString(val);System.out.println(str4);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/192188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录第二十二天(一刷C语言)|组合总数电话号码的字母组合

创作目的:为了方便自己后续复习重点,以及养成写博客的习惯。 一、组合总数 思路:参考carl文档和视频 1、需要一维数组path来存放符合条件的结果,二维数组result来存放结果集。 2、targetSum 目标和,也就是题目中的…

【Python】Python给工作减负-读Excel文件生成xml文件

目录 ​前言 正文 1.Python基础学习 2.Python读取Excel表格 2.1安装xlrd模块 2.2使用介绍 2.2.1常用单元格中的数据类型 2.2.2 导入模块 2.2.3打开Excel文件读取数据 2.2.4常用函数 2.2.5代码测试 2.2.6 Python操作Excel官方网址 3.Python创建xml文件 3.1 xml语法…

自定义类型:结构体(自引用、内存对齐、位段(位域))

目录 一. 结构体类型的声明和定义 1.1结构体相关概念 1.11结构的声明 1.12成员列表 1.2定义结构体类型变量的方法 1.21先声明结构体类型再定义变量名 ​​​​1.22在声明类型的同时定义变量 1.23直接定义结构类型变量 二、结构体变量的创建、初始化​和访问 2.1结构体…

[二分查找]LeetCode2009 :使数组连续的最少操作数

本文涉及的基础知识点 二分查找算法合集 作者推荐 动态规划LeetCode2552:优化了6版的1324模式 题目 给你一个整数数组 nums 。每一次操作中,你可以将 nums 中 任意 一个元素替换成 任意 整数。 如果 nums 满足以下条件,那么它是 连续的 …

Java Web——动态Web开发核心-Servlet

1. 官方文档 官方文档地址:Overview (Servlet 4.0 API Documentation - Apache Tomcat 9.0.83) servlet 与 Tomcat 的关系:Tomcat 支持 Servlet Tomcat 是一个开源的 Java 服务器,它主要用来提供 Web 服务,包括 HTTP 请求和响应…

EasyExcel写入多个sheet

直接上代码&#xff1a; public static void main(String[] args) {// 设置excel工作簿ExcelWriter excelWriter EasyExcel.write("F:\\excel\\a.xls").build();List<User> userList new ArrayList<>();userList.add(new User("lisi", "…

初始数据结构(加深对旋转的理解)

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/rotate-array/submissions/ 与字…

11.1每日一题(关于函数定义域)

f(x1)&#xff1a;自变量为x&#xff0c;x1为中间变量&#xff0c;所以f(x1)的定义域的取值范围是x的取值范围 f(x)&#xff1a;自变量为x&#xff0c;f(x)的定义域等价于f(x1)中 x1整体的定义域

深度学习记录--logistic回归损失函数向量化实现

前言 再次明确向量化的目的&#xff1a;减少for循环的使用&#xff0c;以更少的代码量和更快的速度来实现程序 正向传播的向量化 对于,用向量化来实现&#xff0c;只需要就可以完成&#xff0c;其中,, ps.这里b只是一个常数&#xff0c;但是依然可以加在每个向量里(python的…

09-命令者模式-C语言实现

命令者模式是一个高内聚的模式&#xff0c; 其定义为&#xff1a; Encapsulate a request as an object,thereby letting you parameterize clients with different requests,queue or log requests,and support undoable operations.&#xff08;将一个请求封装成一个对象&…

JDK17的安装与配置

JDK17的安装与配置 下载地址安装步骤配置环境变量验证安装是否成功 下载地址 此jdk17安装的系统是win10系统 https://www.oracle.com/java/technologies/downloads/ 这里选择JDK17进行下载 下载完成之后&#xff0c;显示如下图&#xff1a; 安装步骤 自定义的安装路径&…

智能优化算法应用:基于探路者算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于探路者算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于探路者算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.探路者算法4.实验参数设定5.算法结果6.参考文献7.…

动态规划------方法汇总

核心&#xff1a; 状态定义 状态转移方程 启发思路&#xff08;两种情况&#xff09;&#xff1a;选 或 不选 / 选哪个 DP三步&#xff1a;先写回溯&#xff0c;时间复杂度 指数级别&#xff1b;递归的过程中会重复计算&#xff0c;要保存计算结果&#xff0c;递归搜索…

Windows微软常用运行库合集2023

微软常用运行库合集适用于Windows系统的运行库合集包&#xff0c;基于微软官方的运行库而制作的&#xff0c;包括了常用的vb&#xff0c;vc2005/2008/2010/2012/2013/2017/2019/2005-2022&#xff0c;Microsoft Universal C Runtime&#xff0c;VS 2010 Tools For Office Runti…

Programming Contest 2023(AtCoder Beginner Contest 331)D题 Tile Pattern --- 题解

目录 D - Tile Pattern 题目大意&#xff1a; 思路&#xff1a; 代码&#xff1a; D - Tile Pattern D - Tile Pattern (atcoder.jp) 题目大意&#xff1a; 给你一个n和q&#xff0c;n为局部棋盘大小(n*n) 并且给出局部棋盘中黑白子位置的放置情况&#xff0c;q为查询次数…

某60区块链安全之Create2实战一学习记录

区块链安全 文章目录 区块链安全Create2实战一实验目的实验环境实验工具实验原理实验内容Create2实战一 实验步骤分析合约源代码漏洞Create2实战一 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约Create2引发的漏洞及其利用 找到合约漏洞进行分析并形成利用 实…

淘宝/天猫商品详情API接口丨京东商品详情丨1688商品详情丨接口key密钥获取方式

要获取淘宝/天猫商品详情API接口、京东商品详情API接口、1688商品详情API接口以及接口密钥&#xff08;Key&#xff09;&#xff0c;可以按照以下步骤进行操作&#xff1a; 注册并登录淘宝/天猫开发者中心或京东开放平台或1688开放平台&#xff0c;并创建应用。在创建应用的过…

GODOC命令无效,原因是需要手动安装

在看《GO程序设计语言》这本书&#xff0c;按照其中的内容&#xff0c;想看下GO自带的包的文档。 书中讲&#xff0c;可以直接输入GoDOC命令来打开一个服务器&#xff0c;从而可以用浏览器访问文档库。输入命令后&#xff0c;系统提示找不到该命令。 查了资料后才发现&#xff…

6-55.汽车类的继承

根据给定的汽车类vehicle&#xff08;包含的数据成员有车轮个数wheels和车重weight&#xff09;声明&#xff0c;完成其中成员函数的定义&#xff0c;之后再定义其派生类并完成测试。 小车类car是它的派生类&#xff0c;其中包含载人数passenger_load。每个类都有相关数据的输出…

解决Wireshark分析RTMP抓包时Unknown问题

使用Wireshark抓包时&#xff0c;经常出现很多Unknown包&#xff0c;但实际上的字节流实际是正常的。 其实&#xff0c;RTMPT设置里有一个最大包大小的设置&#xff0c;默认是32768&#xff0c;而且默认RTMPT协议配置了从多个TCP流中重组RTMPT的功能(应当是考虑基于HTTP的传输…