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 目标和,也就是题目中的…

企业数字化转型应该做什么

以下是通过学习华为数字化转型并结合自身情况引发的学习思考,供大家参考。企业做数字化转型目的是为了赋能业务,因为原有老业务发展了这么多年,好做的都已经做完了,目前已进入了深水区,需要引入新的创新源泉,需要跨界创新,特别是这几年IT技术的发展,需要通过IT进行借力…

Rust多线程任务,发现有些线程一直获取不到锁【已解决】

问题描述 项目中用到rust,其中在多线程中用到了同一个对象的锁,然而发现其中一个线程一直拿不到这个锁。 解决过程 我先是在线程A中加入了sleep方法,这样做的效果就是,比最初好一些,但是拿到锁还是要较长时间&#xf…

动态页面技术的发展与应用

jsp 静态页面:web诞生后的html文档,不论多少次访问都是同一份html文档或者是其他的什么文档,所以说是”静态“的。 虽然js能让页面产生互动,但是不论什么人访问,看到的都是放在服务器的那一份写死的文件/文档activexa…

【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结构体…

初探webpack之单应用多端构建

初探webpack之单应用多端构建 在现代化前端开发中,我们可以借助构建工具来简化很多工作,单应用多端构建就是其中应用比较广泛的方案,webpack中提供了loader与plugin来给予开发者非常大的操作空间来操作构建过程,通过操作中间产物…

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

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

记录 | ssh config免密连接

[适用于 linux 和 mac] 比如 ~/.ssh/config: Host targetHostName 192.168.2.12User rootPort 9990这样每次 ssh target 的时候每次都需要输入密码,比较麻烦 解决办法如下,可让下次不用重新输入密码 # 先要生成 ssh 密钥 ssh-keygen# 配置永久性密码 s…

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

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

Qt基础之四十:Qt Installer Framework(QtIFW)的编译、使用和实现原理

一.编译 编译环境: 系统:Windows 10 专业版 64位 编译器:Visual Studio 2017 本文编译的是当前最新版本qt-installer-framework 4.6.1 源码下载地址:清华大学开源软件镜像站 解压后可以看到里面自带编译指导文件—INSTALL,INSTALL里明确了以下几点: 1.静态编译Qt Qt版…

Git 合并冲突解决步骤

Git 合并冲突解决步骤 1. 找到并打开冲突文件 定位到发生冲突的文件。可以通过 Git 的命令行输出找到这些文件。例如: pom.xmlsrc/main/java/com/zzm/config/SecurityConfig.javasrc/main/java/com/zzm/service/chat/UserConversationsServiceImpl.javasrc/main/…

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/ 与字…

Android Wifi的扫描机制

Android Wifi 的扫描场景分为下面四种情况&#xff1a; 1.亮屏情况下&#xff0c;在Wifi settings界面&#xff0c;固定扫描&#xff0c;扫描时间为10s。 2.亮屏情况下&#xff0c;在非Wifi settings界面&#xff0c;二进制指数退避扫描&#xff0c;退避&#xff1a;interval…

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;将一个请求封装成一个对象&…

记录 | mac双屏时程序坞跑到副屏的解决方法

mac双屏时程序坞跑到副屏的解决方法&#xff1a; (1) 按下 optioncommandD&#xff0c;开启程序坞 “自动隐藏”&#xff0c;副屏程序坞消失&#xff1b; (2) 鼠标回到主屏&#xff0c;放在主屏正下方中间的边缘不要动&#xff0c;主屏能看到扩展坞出现了&#xff1b; (3) 按…

JDK17的安装与配置

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