【Java核心技术】第3章 Java的基本程序设计结构

1 数据类型

        Java一共有8种数据类型:

  • 4种整型

类型存储需求
int4字节
short2字节
long8字节
byte1字节
  • 2种浮点型

类型存储需求
float4字节
double8字节
  • 1种字符型

  • 1种布尔型

2 变量声明

2.1 局部类型推断

        如果可以从变量的初始值推断变量类型,只需要使用 var关键字,而无需指定类型

var salary = 7856.98 // salary is double

2.2 枚举类型

        用关键字 enum 声明一个枚举类型

enum Size = {small, medium, big};

2.3 条件运算符

        condition ? expression1 : expression2

        如:

x = 8;
y = 3;
System.out.println(x < y ? x : y) // 输出3

2.4 运算符优先级

运算符结合性
[] . (方法调用)-->
! ~ ++ -- +(一元运算) -(一元运算) ()(强制类型转换) new<--
* / %-->
+ --->
<< >> >>>-->
< <= > >= instanceof-->
== !=-->
&-->
^-->
|-->
&&-->
||-->
?:<--
赋值<--

 

2.5 变量之间的转换

强制转换:

int a = (int)2.0;

实线箭头表示无精度损失的转换

虚线箭头表示可能有精度损失的转换

3 字符串

        Java没有字符串类型,而是标准Java类库中提供了一个 String类,每个用双引号括起来的字符串都是String类的一个实例

        但是String不允许修改,要修改就用 StringBuffer 和 StringBuilder 

StringBuilder 字符串构建器(采用单线程操作)

StringBuffer 字符串缓冲器(采用多线程操作)

4 输入与输出

4.1 输入

常见的输入流

  • 标准输入流 System.in

  • 文件输入流 FileInputStream

FileInputStream fileInputStream = new FileInputStream("example.txt");
Scanner scanner = new Scanner(fileInputStream);
  • 网络链接输入流

Socket socket = new Socket("example.com", 80);
InputStream inputStream = socket.getInputStream();
Scanner scanner = new Scanner(inputStream);
  • 字符串输入流 ByteArrayInputStream

String data = "Hello World";
byte[] bytes = data.getBytes();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
Scanner scanner = new Scanner(byteArrayInputStream);

4.2 输出

格式化输出

System.out.printf("%8.2f", x); // 规定了输出的宽度为8个字符,精度为2个字符

转换字符:

转换字符类型
d十进制整数
x或X十六进制整数
o八进制整数
f或F定点浮点数
e或E指数浮点数
g或G通用浮点数(e和f中较短的一个)
a或A十六进制浮点数
s或S字符串
c或C字符
b或B布尔
h或H散列码
%百分号

创建一个格式化的字符串,而不打印输出:

String message = String.format("name: %s  age: %d", name, age);

5 分支

带标签的break:(相当于 go to)

标签还可以放在 if 上面,注意的是只能跳出代码块,而不能跳入

public static void main(String[] args) {int i = 10;int sum = 0;label:while (i > 0) {for (int j = 1; j <= 10; j++) {sum += j * i;break label;}i--;}System.out.println(sum); // 10}

switch 语句:

switch (choice)
{
case 1 ->
break ;
case 2 ->
break ;
default ->
}

6 数组拷贝

不能用 int[] a = b 的形式进行数组拷贝,这样 a 和 b 指向同一个数组,改变一个的同时另一个也变化 所以使用 Array 类的 copyOf 方法:

int[] a = Array.copyOf(b, b.length);

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

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

相关文章

全量知识系统 程序详细设计 之 三种“活物” 之1(QA百度搜索 )

Q1. 今天聊聊 全知系统中 三种“活物”。先从他们的一个简单描述开始&#xff1a; 自主&#xff1a;计算机“集群”的“沉”与“浮”&#xff1b; 自然&#xff1a;AI “众生”的“世”和“界” &#xff1b;自由&#xff1a;人类 “公民”的“宇”或“宙”。 全知系统中的三…

【数组】5螺旋矩阵

这里写自定义目录标题 一、题目二、解题精髓-循环不变量三、代码 一、题目 给定⼀个正整数 n&#xff0c;⽣成⼀个包含 1 到 n^2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的正⽅形矩阵。 示例: 输⼊: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 二、解题精髓…

JVM参数列表

-client :设置JVM使用client模式,特点启动较快(神机不明显(I5/8G/SSD)) -server :设置JVM使用server模式。64位JDK默认启动该模式 -agentlib:libname[options] :用于加载本地的lib -agentlib:hprof :用于获取JVM的运行情况 -agentpath:pathnamep[options] :加载制定路径的本…

Day:007(1) | Python爬虫:高效数据抓取的编程技术(scrapy框架使用)

Scrapy的介绍 Scrapy 是一个用于抓取网站和提取结构化数据的应用程序框架&#xff0c;可用于各种有用的应用程序&#xff0c;如数据挖掘、信息处理或历史存档。 尽管 Scrapy 最初是为网络抓取而设计的&#xff0c;但它也可用于使用API提取数据或用作通用网络爬虫。 Scrapy的优势…

【Nacos】Nacos最新版的安装、配置过程记录和踩坑分享

Nacos是什么&#xff1f;有什么功能&#xff1f;大家可以自行联网&#xff08;推荐 https://cn.bing.com/&#xff09;搜索&#xff0c;这里就不做介绍了。 简单的看了下官网&#xff0c;安装最新版的Nacos&#xff08;v2.3.2&#xff09;需要使用到JDK&#xff08;1.8.0&…

应急响应-战前反制主机HIDSElkeid蜜罐系统HFish

知识点 战前-反制-平台部署其他更多项目&#xff1a; https://github.com/birdhan/SecurityProduct HIDS&#xff1a;主机入侵检测系统&#xff0c;通常会有一个服务器承担服务端角色&#xff0c;其他主机就是客户端角色&#xff0c;客户端加入到服务端的检测范围里&#xff…

滑动窗口用法

文章目录 1. 长度最小的子数组&#xff08;模板&#xff09;2. 无重复字符的最长字串3. 最小覆盖字串4. 加油站5. 替换字串得到平衡字符串 1. 长度最小的子数组&#xff08;模板&#xff09; 题目分析 直接用步骤分析示例1&#xff0c;[]表示窗口&#xff0c;min_length表示满…

软件测试级别和对应要求

软件测试级别指的是将软件测试活动按照不同的开发阶段和测试目的进行分类&#xff0c;形成不同层次的测试过程。 分级依据&#xff0c;根据V模型 单元测试&#xff1a;这是软件生命周期中的第一个测试级别&#xff0c;主要针对软件的最小单元模块进行&#xff0c;例如类、函数…

Robotstudio2024中从备份文件恢复和创建工作站的具体方法演示

Robotstudio2024中从备份文件恢复和创建工作站的具体方法演示 如下图所示,打开Robotstudio2024软件,有需要的可以从以下链接获取: ABB机器人编程仿真软件RobotStudio 2024.1-链接baiduyun 点击“新建”—工作站—创建, 如下图所示,点击“ABB模型库”,选择自己使用的机器…

Proxmox VE qm 方式一键创建Linux虚拟机

前言 实现qm 方式一键创建Linux虚拟机&#xff0c;提高效率。 qm 一键创建Linux 虚拟机 以下实现在线下载镜像&#xff0c;创建虚拟机&#xff0c;安装系统需要自己手动安装哦&#xff0c;如果想实现全自动安装系统&#xff0c;建议部署自己的内网pxe server 系统参考各参数…

EditPlus来啦(免费使用!)

hello&#xff0c;我是小索奇 今天推荐一款编辑器&#xff0c;是索奇学习JavaSE时入手滴&#xff0c;非常好用哈&#xff0c;小索奇还是通过老杜-杜老师入手滴&#xff0c;相信很多人也是通过老杜认识嘞&#xff0c;来寻找破解版或者准备入手这个间接使用的编辑器~ EditPlus是…

刷题DAY53 | LeetCode 1143-最长公共子序列 1035-不相交的线 53-最大子序和

1143 最长公共子序列&#xff08;medium&#xff09; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字…

你使用过哪些并发容器以及使用原因

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:讲一讲你经常使用的并发容器有哪些以及使用原因 在Java中,并发容器主要是指java.util.concurrent包下提供的一些集合类,它们被设计为线程安全的…

HarmonyOS开发实例:【菜单app】

简介 分布式菜单demo 模拟的是多人聚餐点菜的场景&#xff0c;不需要扫码关注公众号等一系列操作&#xff0c;通过分布式数据库可以方便每个人可及时查看到订单详情&#xff0c;数量&#xff0c;总额等&#xff1b;效果如下 demo效果 工程目录 完整的项目结构目录如下 ├…

如何编译OpenHarmony自带APP

作者&#xff1a;王石 概述 OpenHarmony 的主干代码是开源社区的重要学习资源&#xff0c;对于想进行应用开发和熟悉 OpenHarmony 能力的同学主干代码是非常重要的资源&#xff0c;在主干代码的 applications 目录里聚集了很多原生的应用实现&#xff0c;那么如何编译这些代码…

广州南沙番禺联想SR530服务器主板传感器故障维修

今日分享一例广州市南沙区联想ThinkSystem SR530服务器sensor sysbrd vol故障问题维修案例&#xff1b; 服务器型号是&#xff1a;Lenovo thinksystem sr530 g6服务器 服务器所在位置&#xff1a;广东省广州市南沙区 服务器故障问题&#xff1a;机房异常停电&#xff0c;来电后…

【Entity Framework】EF连接字符串和模型

【Entity Framework】EF连接字符串和模型 文章目录 【Entity Framework】EF连接字符串和模型一、概述二、使用 Code First 按约定创建连接三、使用 Code First 和指定的数据库名称按约定创建连接四、将 Code First 与 app.config/web.config 文件中的连接字符串结合使用五、将 …

linux服务器运维定期清理cache

在Linux系统中&#xff0c;释放未使用的物理内存回收到系统可以重新使用的状态通常是通过将内存分页文件交换到磁盘上来实现的。这个过程称为交换&#xff08;swapping&#xff09;。 要释放内存&#xff0c;可以手动触发交换操作&#xff0c;或者通过调整系统的交换设置来优化…

请核对您的姓名、证件号码、有效期和年限是否选择正确,请勿使用挂失过的身份证

问题 请核对您的姓名、证件号码、有效期和年限是否选择正确&#xff0c;请勿使用挂失过的身份证 详细问题 笔者在专利业务办理系统进行新用户注册&#xff0c;注册时间为晚上大概22&#xff1a;00以后。注册时已核对姓名、证件号码、有效期和年限&#xff0c;已确保正确&…

蓝桥杯备考随手记: 动态规划

1. 动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;是一种解决多阶段最优化问题的方法&#xff0c;它将问题分解成多个子问题&#xff0c;通过逐个求解子问题来求解原问题。 在动态规划中&#xff0c;每个子问题只需要求解一次&#xff0c;并将其结果…