Java 基础学习(一)Java环境搭建和基本数据类型

1 Java 开发环境搭建

1.1 Java 编程语言

1.1.1 什么是Java编程语言

语言是人类进行沟通交流的各种表达符号,方便人与人之间进行沟通与信息交换;而计算机编程语言则是人与计算机之间进行信息交流沟通的一种特殊语言,也有语法规则、字符、符号等等。常见的计算机编程语言有C、C++、Python、JAVA等。

1.1.2 Java语言历史

James Gosling及其团队于1990年开始“绿色计划”,后来发展一套语言叫做“Oak”( 以高斯林办公室外的一棵橡树命名),后更名为Java。Java 最初是为交互式电视设计的,但它对于当时的数字有线电视行业来说太先进了;随着发展,Sun Microsystems 于 1996 年发布了Java 1.0,截止2023年6月,Java 20是最新的版本。

1.1.3 Java语言应用领域

Java语言被广泛应用于各类应用的开发:

  • 网站类应用:淘宝网、京东网等
  • 云平台和应用程序:阿里云、华为云等
  • 大数据平台和应用程序:Hadoop、Flink等
  • 物联网类应用程序
  • 游戏类应用程序

根据JetBrains公司于2021年组织的开发语言调研,在中国有约47%的开发者使用Java语言。在全世界范围内,Java语言主要被应用于网站开发。

1.1.4 Java编程语言的构成

JDK – Java Development Kit (Java开发工具包),是开发Java程序使用的工具包,可以编译运行Java程序。JDK主要包括:

  • Java 开发工具:用于编译运行Java程序工具命令
  • JRE : Java Runtime Environment (Java运行环境),是Java程序运行的最小环境

其中,JRE主要包含:

  • 系统API:Java运行时候用的基础组件
  • JVM – Java Virtual Machines (Java虚拟机)用于执行Java字节码

因此,可以简单理解为:运行Java程序需要使用 JRE,开发Java程序需要使用 JDK。

1.1.5 经典面试题目:JDK JRE JVM关系

JDK(Java Development Kit)是用于Java应用程序开发的软件包,包括JRE(Java Runtime Environment)和开发工具,而JRE是运行Java程序所需的运行时环境,JVM(Java Virtual Machine)是在JRE中执行Java字节码的虚拟机。

1.2 搭建Java开发环境

1.2.1 什么是集成开发环境(IDE)

集成开发环境(Integrated Development Environment,简称IDE)是一种软件工具,提供了一套集成的功能和工具,用于开发、编写、测试和调试软件应用程序。

IDE通常包括以下核心组件:代码编辑器、编译器/解释器、调试器、构建工具、版本控制系统集成、图形用户界面设计器、项目管理工具。

通过集成这些功能和工具,IDE可以提高开发人员的生产力,简化开发过程,并提供更好的代码质量和可维护性。IDE通常与特定的编程语言或开发平台相关,例如Java开发中常用的Eclipse、IntelliJ IDEA和NetBeans等。

企业中一般采用集成开发环境软件作为Java开发平台使用,其自动化程度好、编程效率高,可以大大简化开发流程,提高开发效率。

目前比较常用的集成开发环境有:

  • Eclipse
  • IntelliJ IDEA

1.2.2选择Java的版本

Java的版本管理中,短期支持版(Short-Term Support,STS)和长期支持版(Long-Term Support,LTS)是不同类型的发布版本。

短期支持版(STS):短期支持版是每六个月发布一次的版本,这些版本通常包含新的功能、改进和修复。它们提供了最新的技术和特性,但支持周期相对较短。

长期支持版(LTS):长期支持版是每三年发布一次的版本,这些版本被认为是稳定和可靠的,并具有更长的支持和维护周期。LTS版本提供了更长时间的支持,包括安全修复和错误修复,以确保应用程序的稳定性和兼容性。

目前的Java版本情况如下:

Java 8:Java 8是Java平台的第一个LTS版本,于2014年3月发布。它引入了重要的特性,如Lambda表达式、Stream API等。Java 8的LTS支持于2025年停止,现在被广泛使用。

Java 11:Java 11是Java平台的第二个LTS版本,于2018年9月发布。作为LTS版本,它提供长达八年的公共支持。Java 11引入了局部变量类型推断、HTTP/2客户端等功能。

Java 17:Java 17是Java平台的最新LTS版本,于2021年9月发布。作为LTS版本,它将获得长达八年的公共支持。Java 17带来了一些新特性和改进,如弱引用支持、垃圾回收器的改进等。

除了LTS版本外,Java还有一系列的短期支持版(STS),如Java 12、13、14、15和16等。这些版本提供了最新的功能和改进,但支持周期相对较短。

开发者可以根据自己的需求和情况选择适合的Java版本。对于企业和长期项目,LTS版本通常是更好的选择,而对于那些需要最新功能的开发者,可以选择短期支持版。

1.2.3 安装Java开发环境步骤

目前企业中主流采用Java 8但是在JetBrain 2022年调查数据中Java 17占有率提升很快,因此以Java 17为例讲解Java开发环境安装步骤:

一、下载安装配置JDK 17

  • 从Oracle网站下载JDK 17
  • 安装JDK 17
  • 配置JDK 17

二、下载安装IDEA

  • 下载IDEA
  • 安装IDEA

1.2.4【案例】安装及配置Java 开发环境 JDK 17

在Oracle网站中找到JDK 17的下载页面:

如果是苹果电脑,请下载对应macOS版本的JDK。

下载JDK 17到本地后,安装JDK 17 ,并执行JDK安装程序,选择n个下一步完成安装。然后配置Java环境变量(在新版Java中这些环境变量都是可选参数了,可以省略):

1、配置JAVA_HOME

PS C:\Users\Liu> java -version
java version "17.0.7" 2023-04-18 LTS
Java(TM) SE Runtime Environment (build 17.0.7+8-LTS-224)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.7+8-LTS-224, mixed mode, sharing)
PS C:\Users\Liu> javac -version
javac 17.0.7

1.2.5【案例】安装及配置Java 集成开发环境 IDEA

在JetBrains网站中找到IDEA的下载页面:

 然后下载IDEA Community版到本地,并安装IDEA:双击下载好的安装文件,启动安装程序,按照提示选择“下一步”直到IDEA安装完毕。

1.3 第一个Java程序

1.3.1 Hello World

编程语言学习的传统习惯是从HelloWorld开始:

1、Hello World 是最编程语言中最简单的程序

2、你第一次使用编程语言控制计算机的运行

3、编写第一个Java程序,测试Java开发环境工作是否正常

第一个 Java 的 HelloWorld 程序,源码如下所示:

1.3.2 注释

在计算机编程中,注释是计算机程序源代码中程序员可读的解释或注释。 添加它们的目的是使源代码更易于人类理解,并且通常被编译器和解释器忽略。

Java中常用的注释有三种,分别是单行注释、多行注释和文档注释,语法如下:

// 这是单行注释
/* 这是多行注释 */
/**  这是文档注释  */

2 Java运行原理

2.1 Java程序执行过程

2.1.1 Java程序执行过程

程序员所编写的代码保存为以.java为后缀的文件,此文件操作系统不能正确识别,因此,首先要经过编译,生成所谓的字节码文件(.class),而字节码文件需要JVM来提供运行环境的支持。

JVM安装在操作系统中,建立在操作系统之上,为字节码文件提供运行环境,效果如下图所示:

Java官方提供了针对不同平台的JVM软件,即:不同平台的JVM是不同的。但这些JVM遵循着相同的标准,即:只要是标准的.class文件,就可以在不同的JVM上运行,而且运行的效果相同。这样,就实现了所谓的“一次编程到处使用”:

Java程序遵循着先编译、后执行的原则。首先,通过javac命令将JAVA源程序(.java文件)编译为JAVA字节码(.class文件),而后,通过java命令启动JVM,由JVM来加载.class文件并运行.class文件。效果如下图所示:

因此,可以将其运行执行过程,简单总结为:

1、Java源代码编译以后生成字节码

2、字节码在Java虚拟机上执行

3、Java虚拟机(JVM)将字节码翻译为目标平台可以执行的指令

3 标识符与数据类型

3.1 标识符与关键字

3.1.1 标识符

标识符是指用来标识某个实体的一个符号。在Java语言中,主要是指在编程时使用的名字。标识符的使用须遵循一定的规则:Java中的标识符由字母、数字、下划线或美元符号组成,且必须以字母、下划线(_)或美元符号($)开头。规则总结如下:

  • 可以包含数字,但不能以数字开头
  • 除下划线(_)和美元符号($)以外,不包含任何其他特殊字符,如空格
  • 不能用Java关键字或保留字做标识符
  • Java标识符大小写敏感

不合法的标识符,如下图所示:

虽然Java的语法允许使用下划线(_)和美元符号($)作为标识符的开始,但是在很多企业的开发规范中约定,不能使用这两者作为标识符的开始,以达到统一标识符格式,减少歧义的效果。

企业的开发规范也称为编程规约,是企业在生产实践过程中总结出来的编程规则或建议,主要起到提高代码规范性和安全性,减少程序异常和漏洞的作用。后续在介绍Java标准语法的同时,也会适当加入对企业编程规约的介绍,作为实际编码的行为参考。

3.1.2 关键字和保留字

关键字和保留字是Java语言中具有特殊含义的单词或符号。关键字是Java语言本身定义的,用于表示特定的语法结构和操作,不能用作标识符(如变量名、类名等)。Java语言共有50个关键字,如下所示:

abstract    continue    for         new         switch
assert      default     if          package     synchronized
boolean     do          goto        private     this
break       double      implements  protected   throw
byte        else        import      public      throws
case        enum        instanceof  return      transient
catch       extends     int         short       try
char        final       interface   static      void
class       finally     long        strictfp    volatile
const       float       native      super       while

这些关键字具有固定的语法含义,不能被用作变量名或其他标识符。保留字是指被保留但目前未被使用的关键字,它们在Java语言中没有特定的功能,但为了保留未来可能使用的关键字而被保留。开发者在编写代码时应避免使用关键字作为标识符,以免引发编译错误或语法混淆。

3.2 变量

3.2.1 变量的声明

变量是Java程序中的基本存储单元,它的作用是用来存储数据。变量本质上代表了内存中的一个存储的区域,这个区域里的数据在同一数据类型中可以不断的变化。通过变量可以方便的读取和操作该区域中的数据。变量的内存示意图如下所示:

因此,可以理解为:变量就是指代在内存中开辟的存储空间,用于存放运算过程中需要用到的数据。

在Java中,需要先声明一个变量,才能使用这个变量。变量的声明包含两点:变量的数据类型和变量名,语法格式如下:

数据类型 变量名; 

数据类型可以是Java的任意数据类型之一;变量名即变量的名称,用于存储变量值。

例如:

int a;
char b; 

上述代码中的第一行声明了一个变量a,它的数据类型是int;第二行声明了一个变量b,它的数据类型是char。关于数据类型,将在下一小节中详细介绍。

变量的声明主要注意:

  • 变量名必须是一个有效的标识符
  • 变量名不可以使用Java关键字
  • 变量名不可以重复

可以同时声明多个同一数据类型的变量,变量之间用“,”隔开,例如:

int c,d,e;等同于:int c;
int d;
int e;

在上述操作中,并没有声明变量的值,这里相当于没有指定该变量代表的存储空间,如下图所示:

3.2.2 变量的初始化

Java语法规定:变量在使用之前必须初始化,即必须给该变量赋予特定的值。

变量的第一次赋值即对变量的初始化。在Java中,使用等号(=)实现变量的赋值。

变量的初始化有以下两种方式:

1、在声明变量时,同时对变量进行初始化,语法如下:

数据类型 变量名 = 初始值;例如:
int f = 5;

2、第一次使用变量前,对变量进行初始化,语法如下:

数据类型 变量名;……
变量名 = 初始值;
例如:int sum;                      // 声明变量sum
System.out.println(sum);      // 报错,不能使用未赋值的变量
sum = 100;                    // 给变量sum赋值
System.out.println(sum);      // 正确,输出100

3.2.3 变量的访问

变量在声明和初始化后,可以对变量进行访问,包括读取变量的值和修改变量的值。代码如下:

int sum = 100;               // 声明变量sum
System.out.println(sum);     // 输出变量的值 -> 100
sum = 200;                   // 修改变量sum的值
System.out.println(sum);     // 再次输出变量的值 -> 200

变量的访问应注意以下几个方面:

1、变量的操作必须与类型匹配

变量在声明时指定了类型,Java编译器会检测对该变量的操作是否与其他类型匹配,如果对变量的赋值或者操作与其类型不匹配,会产生编译错误,例如:

//编译错误,变量a的类型为int整型,不能赋值为浮点类型的值
int a = 3.14;  

2、变量的数据类型只写一次

变量在第一次声明的时候写数据类型,再次使用时不写数据类型,例如:

int n;
n = 5;   // 正确,再次使用变量n时不写数据类型
int n = 10; // 再次指定变量的数据类型会出现编译错误

3、未经声明的变量不能使用

变量必须先声明,否则会出现编译错误,例如:

k=5;    
System.out.println(p);  // 编译错误,变量没有声明

4、变量初始化后才可以使用

声明一个变量,必须初始化后才能使用,例如:

int t;                             
System.out.println(t);  // 变量t没有初始化,出现编译错误

3.3 基本数据类型

3.3.1数据类型分类

Java是一门强类型的编程语言,所有的变量必须显示声明数据类型,在Java中定义了许多数据类型,根据数据的特点,Java的数据类型分为两大类:基本数据类型和引用数据类型。

Java中数据类型分类如下图所示:

Java基本数据类型包括4类8种。4类分别是整数类型、浮点数类型、字符类型和布尔类型。

引用类型是指除基本数据类型以外的所有类型,包括类、接口、数组、枚举等,会在后续的章节中具体介绍。

3.3.2 整数类型

Java中整数类型包括:byte、short、int 和long型,它们之间的区别仅仅是宽度和范围的不同。

例如,一个byte类型的变量代表的值占用1个字节的内存空间(8位),能够表示的10进制整数数据范围是负128到正127,包含0。一个int类型的变量代表的值占用4个字节的内存空间(32)位,能够表示的10进制整数数据范围是负2147483648到正2147483647,包含0。一个int类型的变量的值也可以是负128到正127的任意整数,但是相对于使用byte类型的变量,会额外占用3个字节的内存空间。示意图如下所示:

 整型数据使用时必须先声明,在声明时也可以赋初值。如果例如:

byte a = 7;
short b= 128;
int c = 7;

在内存资源非常有限或对计算效率要求非常高的应用场景中,根据准备存储的数据的大小,选择占用内存空间最小的数据类型是很有意义的。反之,在资源较为充裕的应用场景中,一般使用int类型来存储整数,仅当需要存储超过int访问的整数时,再使用long类型。

整数类型的宽度和范围如下所示:

3.3.3 浮点类型

浮点类型主要用来储存小数数值,也可以用来储存范围较大的整数。它分为单精度浮点数(float)和双精度浮点数(double)两种,双精度浮点数比单精度浮点数所使用的内存空间更大,可表示的数值范围与精确度也比较大。

这里需要注意,Java中的浮点型底层使用IEEE 754(二进制浮点算术标准)来存储变量的值。因此,虽然float和int都是占用4个字节的内存空间,但是float能表示的整数范围远大于int类型。

浮点类型的宽度和范围如下所示:

 浮点类型需使用float和double关键字,也可以在声明时赋初值。例如:

float a = 7.5F;
double b= 123.6D;

3.3.4 字符类型

字符类型表示单个字符,Java中的字符类型变量使用char关键字进行声明,而字符型字面量必须用单引号括起来,例如:char c = 'A';

Java字符采用双字节Unicode编码,占两个字节(16位),最高位不是符号位,没有负数的char。可用十六进制编码形式表示,它们的表现形式是\un,其中n为16位十六进制数,例如:'A'字符也可以用Unicode编码'\u0041'表示,前缀u表示Unicode编码。双字节Unicode的存储范围在\u0000~\uFFFF,char类型取值范围0~216 -1(0~65535)。

有些字符(例如回车换行符)不能通过键盘输入到字符串或程序中,这时就需要使用转义字符常量来表示一些特殊字符,前面要加上反斜杠(\)。常见的转义符的含义如下所示:

3.3.5 布尔类型

布尔类型在Java语言中使用关键字boolean 声明,它只有两个字面量:true和false。与C语言不同,Java不允许使用0或非0的整数来代替true和false,也不能将其他基本数据类型的值直接转换为布尔类型。布尔类型用于判断逻辑条件的结果,通常在程序的分支和循环控制语句中使用,根据逻辑判断的结果来决定程序的执行流程。

例如:

boolean isBig = true;
boolean isSmall = false;

如果试图给它们赋值true 和false之外的常量,如下所示:

boolean isBig = 1;
boolean isSmall = 'a';

则将发生类型不匹配的编译错误。

3.3.6 字符串类型

字符串类型是Java中用于存储多个字符的数据类型,使用String关键字声明字符串变量。例如:

String str = "abc";

String不是基本数据类型,而是Java中的引用数据类型。理解String的概念、原理和使用方法需要一些面向对象的知识,因此对String的详细介绍通常在后续文章中进行。在这里简要介绍String是因为字符串字面量是程序中最常见的字面量类型之一,初学者容易将字符串类型与基本数据类型char混淆。需要强调两点:

  • Java中的字符串类型字面量是String类型的,而不是char类型的
  • String类型不是基本数据类型,而是引用类型

3.3.7 字面量

字面量(Literal)是计算机科学中用于表示源代码中固定值的表示法。几乎所有的编程语言都支持基本值的字面量表示,例如整数、浮点数和字符串。同时,很多编程语言也支持布尔类型和字符类型的字面量表示。甚至一些语言还支持枚举类型的元素以及复合类型(如数组、结构体和对象)的字面量表示。

在Java中,字面量指的是直接出现在源代码中的值。例如:

int c = 7; // 其中7是一个字面量
System.out.println(128); // 其中128是一个字面量

3.3.8 字面量的数据类型

在Java中,整数型字面量默认为int类型。如果在整数型字面量后面显式添加大写字母L(推荐)或小写字母l,则该字面量的类型为long。例如:

System.out.println(128L); // 其中128是一个`long`类型的字面量

在Java中,浮点型字面量的默认类型为double。如果想要表示一个float类型的字面量,需要在字面量后面显式添加大写字母F或小写字母f。例如:

System.out.println(3.14F); // 其中3.14是一个`float`类型的字面量

字符串字面量使用双引号引用,字符字面量使用单引号引用。在引号中只能包含一个字符。例如:

String str = "Hello"; // "Hello"是一个字符串字面量
char ch = 'A';        // 'A'是一个字符字面量

字面量是编程中常见且重要的概念,它们直接表示了固定的值。在编写代码时,我们经常使用字面量来初始化变量、传递参数等。

3.3.9【案例】测试最大最小值

新建类,并编写代码,测试不同数据类型的最大最小值:

  • 声明并输出4种整型的最大值和最小值
  • 声明并输出2种浮点型的最大值和最小值
  • 声明并输出布尔型的2种值
  • 声明并输出任意字符型数据的值

案例示意代码如下:

package day01;
public class Scope {public static void main(String[] args) {//整型测试 byte short int long//定义变量记录最大值 最小值//数据类型 数据名  数据值byte max = Byte.MAX_VALUE;byte min = Byte.MIN_VALUE;System.out.println(max);//127System.out.println(min);//-128short smax = Short.MAX_VALUE;short smin = Short.MIN_VALUE;System.out.println(smax);//32767System.out.println(smin);//-32768int imax = Integer.MAX_VALUE;int imin = Integer.MIN_VALUE;System.out.println(imax);//2147483647System.out.println(imin);//-2147483648long lmax = Long.MAX_VALUE;long lmin = Long.MIN_VALUE;System.out.println(lmax);//9223372036854775807System.out.println(lmin);//-9223372036854775808//浮点型 float doublefloat fmax = Float.MAX_VALUE;float fmin = Float.MIN_VALUE;System.out.println(fmax);//3.4028235E38System.out.println(fmin);//1.4E-45double dmax = Double.MAX_VALUE;double dmin = Double.MIN_VALUE;System.out.println(dmax);//1.7976931348623157E308System.out.println(dmin);//4.9E-324//布尔类型booleanboolean b = false;boolean b2 = true;//字符型charchar c  = 'a';//可以存一个字符char c2 = 128;//可以存一个数字char c3 = '中';//可以存一个汉字System.out.println(c);//char类型可以存数字,但是在打印时,会去查ascii码表,把这个数字对应着的字符是什么拿出来使用。//ascii码表里只规定过来数字0-127对应着的字符,128-65535默认按照字符空格处理System.out.println(c2);//输出一个空格System.out.println(c3);}
}

程序运行结果,如下图所示:

3.3.10【案例】存储输出学生信息

下面是一个使用基本类型存储学生信息并输出的Java案例:

public class StudentInformation {public static void main(String[] args) {// 学生信息int studentId = 12345;String studentName = "赵镇";int age = 20;double score = 92.5;char gender = '男';boolean isMarried = false;// 输出学生信息System.out.println("学生信息:");System.out.println("学号:" + studentId);System.out.println("姓名:" + studentName);System.out.println("年龄:" + age);System.out.println("成绩:" + score);System.out.println("性别:" + gender);System.out.println("婚否:" + isMarried);}
}

在这个案例中,我们使用了基本类型来存储学生的学号、姓名、年龄、成绩、性别和婚否信息。性别使用了char类型来表示,而婚否使用了boolean类型来表示。然后通过使用System.out.println方法来输出学生的各项信息。请根据实际情况修改学生信息的值,然后运行程序,即可输出相应的学生信息。

3.3.11 经典面试问题:Java基本类型

Java的基本数据类型可以分为以下四类八种:

  • 整数类型:包括byte、short、int和long,用于表示整数值
  • 浮点类型:包括float和double,用于表示带有小数部分的数值
  • 字符类型:char,用于表示单个字符
  • 布尔类型:boolean,用于表示真或假的逻辑值

3.4 数据类型转换

3.4.1 自动类型转换

在Java中,将小范围数据转换为大范围数据的过程称为自动数据类型转换,也被称为"隐式数据类型转换"。这种转换是自动发生的,不需要明确的语法说明。

由于大范围类型的取值范围覆盖了小范围类型,所以小类型的数据可以自动转换为大范围的数字。这就好比将小物体放入大口袋中一样。Java支持以下类型的自动类型转换:

这些自动类型转换的规则是Java编译器根据数据类型的取值范围来判断的。当进行自动类型转换时,编译器会自动将小范围类型的数据转换为大范围类型,保证数据不会丢失。char类型比较特殊,char自动转换为int、long、float和double,但byte和short不能自动转换为char,而且char也不能自动转换为byte或short。

自动类型转换是Java语言中一个重要的特性,它方便了数据的处理和计算,减少了类型转换的繁琐工作。

3.4.2【案例】测试自动类型转换

编写代码,测试自动类型转换。代码如下所示:

int i = 5;
long l = i;     //自动类型转换 int -> long
float f = 3.4F;
double d = f;
double x = 3+4.5; //整数3自动转换为double类型

3.4.3强制类型转换

在Java中,当我们需要将一个变量从大范围转换为小范围时,无法自动完成类型转换,需要使用强制类型转换运算符来完成。由于大类型的范围超过小类型,大类型在小类型范围内的数据可以成功转换,但是超过小类型范围的数据转换时会发生溢出和精度损失。因此,在进行强制类型转换时存在一定的风险。

强制类型转换可以通过将要转换的变量放在括号后,并在括号加上目标类型来实现。例如:

double d = 3.14159;
int i = (int) d; // 强制将double类型转换为int类型

需要注意的是,由于强制类型转换可能导致数据溢出和精度损失,因此在进行转换之前,需要合理评估数据的范围,确保转换不会导致数据丢失或失真。

强制类型转换应该谨慎使用,只在确保转换不会导致数据问题的情况下使用。在实际编程中,建议尽量避免过于频繁地进行强制类型转换,保持数据的准确性和精度。

3.4.4【案例】测试强制类型转换

编写代码,测试强制类型转换。代码如下所示:

package day01;
public class ForcedConversion {public static void main(String[] args) {short s1 = 120;byte b1 = (byte)s1; //  范围内的数据,可以转换成功System.out.println(b1);short s2 = 150;byte b2 = (byte)s2; //超过有效范围,会发生溢出问题System.out.println(b2);long l1 = 12389;int i1 = (int)l1; // 范围内的数据,可以转换成功System.out.println(i1);long l2 = 238923332233L;int i2 = (int)l2; //超过有效范围,会发生溢出问题System.out.println(i2);double d1 = 2.5;float f1 = (float)d1;// 范围内的数据,可以转换成功System.out.println(f1);double d2 = 1.0/3;float f2 = (float)d2; //会发精度损失System.out.println(f2);double d3 = 4333.28832;long l3 = (long)d3; //保留整数部分System.out.println(l3);}
}

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

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

相关文章

kali linux英文改中文

如果英语基础较好的同学可以不用调整 反之则需要 找到终端(就是输入命令的那个地方 如下)点击它出现命令终端 切换为root用户,命令为: sudo dpkg-reconfigure locales 然后回车 找到这个zh_CN 然后回车 鼠标下键选中并且回车 输…

自动驾驶学习笔记(十一)——高精地图

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 高精地图 地图采集 底图制作 地图…

HCIA-H12-811题目解析(1)

1、【多选题】关于动态 MAC 地址表说法正确的是? A、通过报文中的源MAC地址学习获得的动态MAC表项会老化 B、通过查看指定动态MAC地址表项的个数,可以获取接口下通信的用户数 C、在设备重启后,之前的动态表项会丢失 D、在设备重启后&…

Vue打包错误UnhandledPromiseRejectionWarning: CssSyntaxError

错误详情如下: building for production...Error processing file: static/css/app.3d5caae7aaba719754d7d5c30b864551.css (node:33011) UnhandledPromiseRejectionWarning: CssSyntaxError: /Users/yt/Documents/BM/sims-plus/sims-website/static/css/app.3d5caa…

基于PLC的果园灌溉系统设计(论文+源码)

1.系统设计 系统示意图如图2-1所示。某一果园 共有3个灌溉区域,分别为灌溉1#区,灌溉2#区,灌溉3#区,分别使用不同湿度传感器检测湿度,用于各区域控制湿度,进行灌溉,使用相应的灌溉阀进行灌溉。这…

2016年五一杯数学建模C题二孩政策问题解题全过程文档及程序

2016年五一杯数学建模 C题 二孩政策问题 原题再现 多年来实施的严、紧计划生育政策对控制人口增长起到关键作用。在优生优育政策的指引下,我国人口质量显著提高,但也带来了不利影响,生育率偏低、男女比例失衡、人口老龄化情况严重等问题。2…

BetaFlight模块设计之三十六:SoftSerial

BetaFlight模块设计之三十六:SoftSerial 1. 源由2. API接口2.1 openSoftSerial2.2 onSerialRxPinChange2.3 onSerialTimerOverflow2.4 processTxState2.5 processRxState 3. 辅助函数3.1 applyChangedBits3.2 extractAndStoreRxByte3.3 prepareForNextRxByte 4. 总结…

老师组织课外活动的好处有哪些

亲爱的小伙伴们,不知道你们有没有注意到,老师除了在课堂上教学之外,还会在课外组织各种各样的活动呢?这些活动不仅好玩,而且对我们有很多好处哦!今天我就来给大家分享一下老师组织课外活动的好处吧&#xf…

geemap学习笔记014:加载本地的tif文件

前言 Colab中似乎没法直接加载云盘中的数据,但是可以先上传到GEE中的assets中,再加载本地的数据。下面是以这个数据为例进行展示。 1 上传数据 首先将本地的tif数据上传到Asset中,得到独一的Image ID。 2 加载数据 使用ee.Image加载数据 …

【腾讯云云上实验室】用向量数据库在金融信用数据库分析中的实战运用

一、前言 这篇文章将带领读者探索数据库的多样化解决方案及其演进历程,特别关注向量数据库的重要性和在实际项目中的应用。 通过深入剖析腾讯云向量数据库及其在金融信用数据库分析中的实战运用,为读者提供全面而实用的指南,帮助他们理解、…

【挑战业余一周拿证】一、亚马逊云科技简介 - 第 3 节 - 云计算

第 3 节 - 云计算 在深入了解亚马逊云科技的各个部分之前,让我们先缩小视野,对云进行一个合理的定义。云计算就是通过互联网按需提供 IT 资源并采用按需付费定价模式,下面,我们将进行详细说明。 按需提供表示的是亚马逊云科技会在…

箱型图 Box Plot 数据分析的法宝

文章目录 一、箱形图的介绍二、六大因数三、Box plot的应用四、箱形图的优劣势五、图形拓展 一、箱形图的介绍 箱形图又称为盒须图、盒式图、盒状图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因型状如箱子而得名。 在各种领域也经常被使用&#xff0…

基于springboot实现医院信管系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现医院信管系统演示 摘要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生&#x…

C语言做一个恶作剧关机程序

一、项目介绍 C语言实现一个简单的"流氓软件"&#xff0c;一个可以强制关机恶作剧关机程序&#xff0c;输入指定指令可以解除 二、运行截图 然后当你输入“n”才可以解锁关机。 三、完整源码 #include <stdlib.h> #include <stdio.h> #include <s…

Java核心知识点整理大全17-笔记

Java核心知识点整理大全-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全2-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全3-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全4-笔记-CSDN博客 Java核心知识点整理大全5-笔记-CSDN博客 Java核心知识点整理大全6…

debian 12设置静态ip、dns

debian 12设置静态ip、dns 1、设置静态ip2、设置dns 1、设置静态ip 查看网卡名称是ens33 ip address编辑网卡配置文件 vi /etc/network/interfaces默认是这样的 在最后面添加下面内容 其中 ens33是上步中查询到的网卡名称address 192.168.2.157 是ip地址netmask 255.255.…

Kubernetes技术与架构-配置

一般情况下&#xff0c;Kubernetes使用yaml文件格式定义配置文件&#xff0c;配置文件须指定对应的API稳定版本号&#xff0c;将配置文件进行版本控制、在发布新版本的过程中出问题时可以执行版本回滚操作&#xff0c;将相关联的对象定义在同一个配置文件中、从而更容易地管理&…

C++学习之路(六)C++ 实现简单的工具箱系统命令行应用 - 示例代码拆分讲解

简单的工具箱系统示例介绍: 这个示例展示了一个简单的工具箱框架&#xff0c;它涉及了几个关键概念和知识点&#xff1a; 面向对象编程 (OOP)&#xff1a;使用了类和继承的概念。Tool 是一个纯虚类&#xff0c;CalculatorTool 和 FileReaderTool 是其派生类。 多态&#xff1…

计算一个Series序列的n阶滞后相关系数Series.autocorr()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算一个时间序列的 n阶滞后自相关系数 Series.autocorr(n) [太阳]选择题 以下代码的说法中正确的是? import pandas as pd s1 pd.Series([1,2,3,4,5,6]) print("【显示】s1:\n",…

7 通用数字量输入输出GPIO

文章目录 7.0 GPIO概念7.1 GPIO工作原理7.2 GPIO寄存器以及编程7.2.5 GPIO寄存器编程设置与应用 7.3 GPIO跑马灯7.3.1 LED 输出初始化7.3.2 跑马灯输出实验7.3.3 按键输入实验 7.0 GPIO概念 GPIO&#xff08;general purpose intput output&#xff09;是通用输入输出端口的简…