【Java基础_02】Java变量

news2024/11/29 8:58:35

【Java基础_02】Java变量、运算符、程序控制结构

文章目录

  • 1 变量
    • 1.1 程序中“+”号的使用
    • 1.2 数据类型
    • 1.3 整数类型
      • 1.3.1 整数类型的分类
      • 1.3.2 整型的使用细节
    • 1.4 浮点类型
      • 1.4.1 浮点型的分类
      • 1.4.2 浮点类型使用细节
    • 1.5 字符类型
      • 1.5.1 字符类型使用细节
      • 1.5.2 字符类型本质
      • 1.5.3 Java常用编码
        • ASCII码
        • Unicode码
        • UTF-8
    • 1.6 布尔类型:boolean
    • 1.7 自动类型转换
      • 1.7.1 自动类型转换细节
    • 1.8 强制类型转换
      • 1.8.1 强制类型转换细节
    • 1.9 基本数据类型转换-练习题
    • 1.10 基本数据类型和 String 类型的转换
      • 10.1 注意事项

1 变量

注意事项
在这里插入图片描述

1.1 程序中“+”号的使用

在这里插入图片描述

1.2 数据类型

Java中每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。
在这里插入图片描述

1.3 整数类型

Java 的整数类型就是用于存放整数值的,比如 12 , 30, 3456 等等

1.3.1 整数类型的分类

在这里插入图片描述

1.3.2 整型的使用细节

在这里插入图片描述

int n1 = 1
long n3 = 1L; //数值是1,但是long类型

1.4 浮点类型

1.4.1 浮点型的分类

在这里插入图片描述

  1. 关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位
  2. 尾数部分可能丢失,造成精度损失(小数都是近似值)。

1.4.2 浮点类型使用细节

在这里插入图片描述

//Java 的浮点型常量(具体值)默认为 double 型,声明 float 型常量,须后加‘f’或‘F' 
float num1 = 1.1; //对不对?错误 
float num2 = 1.1F; //对的 
double num3 = 1.1; //对 
double num4 = 1.1f; //对(小放大,是正确的)

//十进制数形式:如:5.12 512.0f .512 (必须有小数点) 
double num5 = .123; //等价 0.123 
System.out.println(num5);  //0.123
//科学计数法形式:如:5.12e2 [5.12 * 10 的 2 次方 ] 5.12E-2 [5.12 / 10的2次方] 
System.out.println(5.12e2);//512.0 进行了乘法运算,计算后后类型是double,所以是512.0
System.out.println(5.12E-2);//0.0512

//通常情况下,应该使用 double 型,因为它比 float 型更精确。 
//[举例说明]
double num9 = 2.1234567851;
float num10 = 2.1234567851F; 
double num9 = 2.1234567851; 
float num10 = 2.1234567851F; 
System.out.println(num9);  //2.1234567851
System.out.println(num10);  //2.1234567

//浮点数使用陷阱: 2.7 和 8.1 / 3 比较  
double num11 = 2.7; 
double num12 = 8.1 / 3; //2.7 
System.out.println(num11);//2.7 
System.out.println(num12);//接近 2.7 的一个小数,而不是 2.7 2.6999999999999997,因为转成二进制算的,可能会算成这样

//得到一个重要的使用点: 当我们对运算结果是小数的式子进行相等判断时要小心
//应该是以两个数的差值的绝对值,在某个精度范围类判断 
if( num11 == num12) { 
System.out.println("num11 == num12 相等"); 
}
//正确的写法 
if(Math.abs(num11 - num12) < 0.000001 ) {   //这个0.000001在不同的业务逻辑中不同
System.out.println("差值非常小,到我的规定精度,认为相等...");
}
细节:如果不是计算所得,而是直接查询得的的小数或者直接赋值,是可以判断相等

1.5 字符类型

java中的char占两个字节,c语言中是一个字节

初始化方式

1.char c='c'; //字符,可以是汉字。因为是Unicode编码,需要加单引号才能直接输出单引号内的内容,否则输出unicode编码对应字符。
2.char c=十进制数,八进制数,十六进制数都可以; //可以用整数赋值【整数范围:0~65535】。输出unicode字符编码表中对应的字符。**

1.5.1 字符类型使用细节

在这里插入图片描述

3. 在java中,char默认输出是unicode码(即该数字)对应的字符。要输出对应的数字,可以(int)字符。

在这里插入图片描述

char c3 = 97; 
 System.out.println(c3);// a
 System.out.println(int(c3));//97 输出'a'对应的数字

在这里插入图片描述

        //字符型
        char c1 = 'a'; //用char只能用单引号,双引号是string,string和char不兼容
        char c2 = '哈';
        char c2_ = 21704;
        char c3 = 97;
        char c4 = '9';  
        char c5 = '\t'; //前面的/表示转义

        System.out.println(c1); //输出a
        System.out.println((int)c1); //输出'a'对应的数字 97
        System.out.println(c2); //输出哈
        System.out.println((int)c2); //输出'哈'对应的数字
        System.out.println(c2_); //输出哈
        System.out.println(c3); //输出97表示的那个字符-》a  ascii码
        System.out.println(c4); //输出9
        System.out.println(c5);  
        System.out.println('a' + 10);  //编译器先把a转为97进行计算=》107

		char c6 = 'b' + 1;
        System.out.println(c6);  // 99->对应的字符->ascii编码表(unicode兼容它)
        System.out.println((int)c6); // 99      

1.5.2 字符类型本质

在这里插入图片描述

1.5.3 Java常用编码

ASCII码

在这里插入图片描述

Unicode码

在这里插入图片描述在大部分是英文的情况下是一种浪费

一个汉字用2个字节表示,一共能表示65536个【范围是0-65536】

UTF-8

在这里插入图片描述

UTF-8使用三个字节表示汉字,表示的汉字更多

1.6 布尔类型:boolean

在这里插入图片描述

不可以用0或者非0的整数替代false或true!

1.7 自动类型转换

在这里插入图片描述蓝图转换都是正确的,'c’为char类型,可以自动转换为int型。80为int,可以自动转换为double(输出为80.0)。

1.7.1 自动类型转换细节

在这里插入图片描述

小数就是默认double的,后面加F才是float,但是byte c = 10;10虽然默认int,但是这样的句子是可以的,在范围内

        //(一)多种类型的数据进行混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
        int n1 = 10;
        double d1 = n1 + 1.1;
        //float d1 = n1 + 1.1; 1.1默认double类型,即结果类型是double,设置为float有精度损失
        float d2 = n1 + 1.1F;   //把1.1转为float类型

        //(二)把精度容量大的数据类型赋给精度容量小的数据类型时就会报错,反之会进行自动类型转换
        //int n2 = 1.1;//小数默认double类型【用int放置精度会丢失】

        //(三)(byte,short)和char之间不会相互自动转换

        //(四)当把具体数赋给byte时,(1)先判断该数是否在byte范围内 (2)如果是变量赋值,判断类型
        byte b1 = 10; // 对, -128 - 127  10只是默认int
        int n2  = 1;
        // byte b2 = n2; //不对,n2是int,按照四个字节存放,放到b2中精度会有丢失。
        // char c1 = b1;// 不对,byte不能自动转换为char

        //(五)byte,short,char三者可以计算,在计算时自动先转换为int类型(当做int进行处理)
        byte b2 = 1;
        short s1 = 1;
        //short s2 = b2 + s1; 不对,b2和s1是int类型
        //byte b4 = b2 + b3;  不对,b2和b3是int类型

        //(六)boolean不参与转换

        //(七) 表达式结果的类型自动提升为操作数中精度最大的类型
        //byte int short double 进行计算,转换为double

1.8 强制类型转换

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

			 int j = 100;
        byte b1 = (byte)j;
        System.out.println(b1);//100不会明显有损失,但如果是1000就会有大的损失

1.8.1 强制类型转换细节

在这里插入图片描述

4对应前面的(五)

double x = (int)10 * 3.6 + 6 * 1.5; //把10转换为int
int y = (int)(10 * 3.5 + 6 * 1.5);
System.out.println(x);
System.out.println(y);

1.9 基本数据类型转换-练习题

在这里插入图片描述

1和2中的错误主要是因为byte,short,char三者可以计算,在计算时首先转换为int类型,目前我认为不能贸然默认是由于9和11是默认int类型,毕竟是在范围内的。

1.10 基本数据类型和 String 类型的转换

字符串相加是拼接,所以加上一个空的字符串就是前面的东西和空的字符串拼接,也就是内容不变但是类型变为字符串。

		//基本数据类型->String
		int n1 = 100; 
        float f1 = 1.1F; 
        double d1 = 4.5; 
        boolean b1 = true; 
        String s1 = n1 + ""; 
        String s2 = f1 + ""; 
        String s3 = d1 + ""; 
        String s4 = b1 + ""; 
        System.out.println(s1 + " " + s2 + " " + s3 + " " + s4);

	    //String->对应的基本数据类型
	    String s5 = "123";
	    int num1 = Integer.parseInt(s5); 
	    double num2 = Double.parseDouble(s5); 
	    float num3 = Float.parseFloat(s5); 
	    long num4 = Long.parseLong(s5);
	    byte num5 = Byte.parseByte(s5); 
	    boolean b = Boolean.parseBoolean("true"); 
	    short num6 = Short.parseShort(s5);
	    System.out.println(num1);//123 		
	    System.out.println(num2);//123.0 
	    System.out.println(num3);//123.0 
	    System.out.println(num4);//123 
	    System.out.println(num5);//123 
	    System.out.println(num6);//123 
	    System.out.println(b);//true(输出的就是这四个字母)

		//怎么把字符串转成字符 char -> 含义是指 把字符串的第一个字符得到 
		//解读 s5.charAt(0) 得到 s5 字符串的第一个字符 '1' 
		System.out.println(s5.charAt(0));

10.1 注意事项

在这里插入图片描述在这里插入图片描述异常-Exception

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

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

相关文章

Mysql学习记录补充

索引 在无索引情况下&#xff0c;就需要从第一行开始扫描&#xff0c;一直扫描到最后一行&#xff0c;我们称之为 全表扫描&#xff0c;性能很低。 如果我们针对于这张表建立了索引&#xff0c;假设索引结构就是二叉树&#xff0c;那么也就意味着&#xff0c;会对age这个字段…

【FX110网】日交所发布1月交易数据:衍生品交易额达历年1月最高!

日本交易所集团&#xff08;日交所&#xff0c;JPX&#xff09;发布了其2024年1月的交易数据概览。数据显示&#xff0c;该交易所当月衍生品交易额创新历年来的1月交易数据最高纪录。2024年1月共有19个交易日。 2024年1月交易概览现货股票市场 2024年1月&#xff0c;该交易所主…

ArrayList在添加元素时报错java.lang.ArrayIndexOutOfBoundException

一、添加单个元素数组越界分析 add源码如下 public boolean add(E e) {ensureCapacityInternal(size 1); // Increments modCount!!elementData[size] e;return true; } size字段的定义 The size of the ArrayList (the number of elements it contains). ArrayList的大…

三层交换组网实验(华为)

思科设备参考&#xff1a;三层交换组网实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 三层交换技术的出现&#xff0c;解决子网必须依赖路由器进行管理的问题&#xff0c;解决传统路由器低速、复杂所造成的网络瓶颈问题。一个具有三层交换功能的设备可简单理解为…

Unity引擎学习笔记之【角色按键器操作】

角色按键Character Controls 一、脚本操作 设置脚本 设置基本键盘操作 //水平轴float horizontal Input.GetAxis("Horizontal");//垂直轴float vertical Input.GetAxis("Vertical");//创建方向向量Vector3 dir new Vector3(horizontal,0,vertical);/…

《Python 网络爬虫简易速速上手小册》第5章:Python 数据存储与管理(2024 最新版)

文章目录 5.1 选择数据存储方案5.1.1 重点基础知识讲解5.1.2 重点案例&#xff1a;使用 SQLite 存储博客文章数据5.1.3 拓展案例 1&#xff1a;使用 MongoDB 存储社交媒体动态5.1.4 拓展案例 2&#xff1a;使用 Elasticsearch 存储和检索日志数据 5.2 数据清洗与预处理5.2.1 重…

鱼和熊掌如何兼得?一文解析RDS数据库存储架构升级

在2023年云栖大会上&#xff0c;阿里云数据库产品事业部负责人李飞飞在主题演讲中提到&#xff0c;瑶池数据库推出“DB存储”一体化能力&#xff0c;结合人工智能、机器学习、存储等方法和创新能力&#xff0c;实现Buffer Pool Extension能力和智能冷温热数据分层能力。在大会的…

Linux 高并发服务器

多进程并发服务器 使用多进程并发服务器时要考虑以下几点&#xff1a; 父进程最大文件描述个数(父进程中需要close关闭accept返回的新文件描述符)系统内创建进程个数(与内存大小相关)进程创建过多是否降低整体服务性能(进程调度) server /* server.c */ #include <stdio…

【刷题题解】最长回文子序列

给你一个字符串 s &#xff0c;找出其中最长的回文子序列&#xff0c;并返回该序列的长度。 子序列定义为&#xff1a;不改变剩余字符顺序的情况下&#xff0c;删除某些字符或者不删除任何字符形成的一个序列 这道题&#xff0c;一眼动态规划&#xff0c;但是即使动起来也规划…

TrinityCore安装记录

TrinityCore模拟魔兽世界&#xff08;World of Warcraft&#xff09;的开源项目&#xff0c;并且该项目代码广泛的优化、改善和清理代码。 前期按照官方手册按部就班的安装即可。 注意几点&#xff1a; 1 需要配置Ubuntu22.04版本的服务器或者Debian11 服务器。2 需要使用gi…

python_ACM模式《剑指offer刷题》链表4

题目&#xff1a; 面试tips&#xff1a; 询问是否需要判断环&#xff0c;可微调下方代码。 思路&#xff1a; 思路一&#xff1a; 判断环是否存在&#xff1a;设定一快一慢指针&#xff0c;均从头节点出发&#xff0c;快指针一次走两步&#xff0c;慢指针一次走一步。若无环…

docker安装-centos

Docker CE 支持 64 位版本 CentOS 7&#xff0c;并且要求内核版本不低于 3.10 卸载旧版本Docker sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine使用yum安装 yum 更新到最新版本: sudo yum update执行以下命令安装依赖包&#xff1a; sudo yum…

[设计模式Java实现附plantuml源码~结构型]处理多维度变化——桥接模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

SpringBoot第二天

Bean管理 Bean扫描 在Spring中&#xff0c;Bean的扫描有两种写法 第一种是在xml配置文件中用标签扫描 <context:component-scan basepackage"com.cacb"/> 第二种是是注解扫描 ComponentScan(basePackages"com.cacb") 而在SpringBoot中&#xf…

张维迎《博弈与社会》威胁与承诺(4)宪政与民主

有限政府 动态博弈理论对我们理解民主与法治具有重要的意义。 自人类进入文明时代以来&#xff0c;政府就是社会博弈重要的参与人。任何社会要有效运行&#xff0c;都需要赋予政府一些自由裁量权。但如果政府的自由裁量权太大&#xff0c;政府官员为所欲为&#xff0c;不仅老百…

Jetson AGX Orin安装Anaconda,Cuda,Cudnn,pytorch,Tensorrt,ROS

Anaconda&#xff1a;https://repo.anaconda.com/archive/ Cuda&#xff1a;https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048 1&#xff1a;安装Anaconda3 下载&#xff1a;Anaconda3-2021.11-Linux-aarch64.sh chmod x Anaconda3-2021.11-Linux-aarch64.s…

瑞_23种设计模式_工厂模式

文章目录 1 什么是工厂模式案例案例代码 2 简单工厂模式&#xff08;Simple Factory&#xff09;2.1 简单工厂模式的结构2.2 案例改进——简单工厂模式2.3 案例改进代码实现2.4 简单工厂模式优缺点2.5 拓展——静态工厂 3 工厂方法模式&#xff08;Factory Method&#xff09;★…

OJ_整数奇偶排序

题干 c实现 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<algorithm> using namespace std;//compare函数不交换返回true bool compare(int a, int b) {//1.a奇数&#xff0c;b偶数&#xff0c;不交换//2.a奇数&#xff0c;b奇数&#xff0c;a比b…

openGauss学习笔记-213 openGauss 性能调优-总体调优思路

文章目录 openGauss学习笔记-213 openGauss 性能调优-总体调优思路213.1 调优思路概述213.2 调优流程 openGauss学习笔记-213 openGauss 性能调优-总体调优思路 213.1 调优思路概述 openGauss的总体性能调优思路为性能瓶颈点分析、关键参数调整以及SQL调优。在调优过程中&…

【Redis】整理

对于现代大型系统而言&#xff0c;缓存是一个绕不开的技术话题&#xff0c;一提到缓存我们很容易想到Redis。 Redis整理&#xff0c;供回顾参考