java基本程序设计结构与数据类型

news2024/9/23 1:36:40

1.一个简单程序的编写、编译与运行

编写如下的Main.java

public class Main{
	public static void main(String[] args){
		System.out.println("Hello World");
	}
}

上面的程序有几个要注意的点:
①public 是访问修饰符,用来表示其他程序对Main类的访问级别。
②类名使用驼峰命名法,如HelloWorld.
③java文件名必须和类名相同。
④JVM在执行一个java文件形成的字节码文件时,其类文件必须包含一个main函数,一个类最多只有一个public static void main
⑤main正常执行的退出码为0,如果要以其他退出码来终止程序,使用System.exit

public class Main{
    public static void main(String[] args){
        if(args.length==0) {
            System.out.println("error");
            System.exit(1); //用1终止程序
        }
        else{
            System.out.println("Hello World");
        }
    }
}

在这里插入图片描述
下面使用命令行来编译运行Main.java
在这里插入图片描述
值得注意的是,java命令执行class文件时,不能在chapter3目录下直接执行java ./src/Main,而是要使用-cp来指定Main.class的目录。

2.注释方式

一共3种:

/**
 * 这是一个Hello World程序
 */
public class Main{
    public static void main(String[] args){
        System.out.println("Hello World"); //输出Hello World
        /*
        我自己是第三种注释方法,1~3行是第一种注释方法(用于形成文档),第6行是第2种注释方法
         */
    }
}

3.数据类型

java的数据类型如下所示:
在这里插入图片描述

3.1 基本数据类型

关于基本数据类型有几个要注意的点:
①java中的数据类型都是长度固定的,不像C中int可以根据硬件设计为int8、int16、int32,这也是java可以跨平台原因之一。
②数据类型中的前后缀
前缀可以是表示二进制的0b/0B、八进制的0、十六进制的0x/0X;后缀可以是long型的L、float型的f/F、double型的d/D。

public class Main{
    public static void main(String[] args){
        int a=0b010;  //一般不会使用八进制,防止引起混淆
        int b=0x010;
        float c=0.1f;
        double d=0.1d;
        System.out.println("a="+a);
        System.out.println("b="+b);
        //((Object)c)将c转化为一个对象,getClass()取得这个对象的类,使用getSimpleName()方法得到类名,也就是数据类型
        System.out.println("c的类型是"+((Object)c).getClass().getSimpleName());
        System.out.println("d的类型是"+((Object)d).getClass().getSimpleName());
    }
}

在这里插入图片描述
③有三个浮点数表示溢出和出错:正无穷大、负无穷大、NaN(数值不固定),分别用Double.POSITIVE_INFINITYDouble.NEGATIVE_INFINITYDouble.NaN表示。注意NaN并不是一个数,不能使用==来判断这个数是不是NaN.

public class Main{
    public static void main(String[] args){
        double a=1;
        double b=a/0;
        double c=-a/0;
        double d = Math.sqrt(-1);
        if(b==Double.POSITIVE_INFINITY){
            System.out.println("error:div 0");
        }
        else{
            System.out.println("b="+b);
        }
        if(c==Double.NEGATIVE_INFINITY){
            System.out.println("error:div 0");
        }
        else{
            System.out.println("c="+c);
        }
        if(Double.isNaN(d)){
            System.out.println("d is a NaN");
        }
        else{
            System.out.println("d is not a NaN");
        }
        if(d==Double.NaN){
            System.out.println("d is a NaN");
        }
        else{
            System.out.println("d is not a NaN");
        }
        System.out.println("d="+d);
    }
}

在这里插入图片描述
④浮点数存在舍入误差,无法表示精确数,这是因为浮点数也是由二进制表示的。要使用精确的浮点数运算,使用BigDecimal类。

import java.math.BigDecimal;

public class Main{
    public static void main(String[] args){
        double a=2.0-1.1;
        System.out.println("a="+a);
        BigDecimal bd1 = new BigDecimal("2.0");
        BigDecimal bd2 = new BigDecimal("1.1");
        BigDecimal bd=bd1.subtract(bd2);
        System.out.println("bd="+bd);
    }
}

在这里插入图片描述
⑤UTF-16 编码采用不同长度的代码表示所有 Unico加码点。在基本多语言平面中,每个字符用 16 位表示,通常称为代码单元 ( codeunit);而辅助字符编码为一对连续的代码单元。 采用这种编码对表示的每个值都属于基本多语言平面中未用的 2048 个值范围,通常称为替代区域 ( surrogate area) ( U+0806 U+DBFF 用于第一个代码单元,U+DC69- U+DFFF 用于第二个代码单元)。这样设计十分巧妙,因为我们可以很快知道一个代码单元是一个字符的编码,还是一个辅助字符的第一或第二部分。在 Java中,char 类型描述了采用UTF-16 编码的一个代码单元。强烈建议不要在程序中使用由char类型,除非确实需要处理UTF-16 代码单元。最好将字符串作为抽象数据类型来处理。
⑥下面是常见的char类型的转义字符
在这里插入图片描述
⑦整型和布尔型之间是不能相互转化的

public class Main{
    public static void main(String[] args){
        int a=1;
        if(a=1{  //语法错误,a=1返回的是int类型,而不是boolean
            System.out.println(a);
        }
    }
}

3.2 引用数据类型

3.2.1 数组

3.2.2 类

3.2.3 接口

3.2.4 枚举

枚举的意义在于,有时候,一个变量只包含有限的一组值。例如,销售的服装或比萨只有小、中、大和超大这四种尺寸。当然,可以将这些尺寸分别编码为整数 1、2、3.、4 或字符 S、M、 L 、X。但这种设置很容易出错、很可能在变量中保存一个错误的值,所以使用枚举变量。

public class Main{
    public static void main(String[] args){
        enum Size {S,M,L,XL};
        Size size=Size.M;
        System.out.println("size="+size);
    }
}

在这里插入图片描述

3.2.5 注解

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

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

相关文章

【C++】vector(下)--下篇

个人主页~ vector(上)~ vector(下)–上篇~ vector 二、模拟实现3、test.cpptest1test2test3test4test5test6 三、一个难题 二、模拟实现 3、test.cpp test1 这个没啥好说的,就是尾插和迭代器都能正常使用 //测尾…

中国各、省、市、县、乡镇基尼系数数据(2000-2023年)

基尼系数是一个国际上广泛用来综合考察居民内部收入分配差异状况的重要指标。它表示在全部居民收入中,用于进行不平均分配的那部分收入占总收入的百分比。基尼系数的值介于0和1之间,其中0代表收入分配绝对平均,即每个人的收入都相等&#xff…

Qt21基础图形的绘制

基础图形的绘制 paintareapaintarea.hpaintarea.cpp paintexpaintex.hpaintex.cpp main.cpp运行图 paintarea paintarea.h #ifndef PAINTAREA_H #define PAINTAREA_H#include <QWidget> #include <QBrush> #include <QPen> #include <QPainter> #inc…

DZ主题模板 Discuz迪恩淘宝客购物风格商业版模板

Discuz淘宝客网站模板&#xff0c;迪恩淘宝客购物风格商业版模板。 版本支持&#xff1a;discuzx3.0版本,discuzx3.1版本,discuzx3.2版本。 包括网站首页&#xff0c;论坛首页&#xff0c;论坛列表页&#xff0c;论坛内容页&#xff0c;论坛瀑布流,频道列表页&#xff0c;频道…

开学季好物合集有哪些?全方位必备好物推荐

随着秋风轻拂&#xff0c;书页翻新的声音在耳边悄然响起&#xff0c;我们迎来了又一个开学季。在这个特别的时刻&#xff0c;每位学子都怀揣着对未来的无限憧憬&#xff0c;踏入了校园的大门。为了帮助大家更好地适应新学期的学习节奏&#xff0c;享受更加充实而愉快的校园生活…

解决Linux安装epel源提示没有可用安装包

目录 前言 常规方法总结 1、命令直接安装 2、通过网址下载安装 手动安装 1、EPEL的资源地址 2、选择版本 3、找到rpm文件存放位置 4、下载并移动至虚拟机中 5、安装 6、成功后会生成相应的repo文件 7、更新源 前言 EPEL&#xff0c; 即Extra Packages for Enterpri…

STM32开发资料

文章目录 前言一、正点原子&#xff1f;1. 资料链接2.论坛3.参考资料盘 二、野火1. 论坛2. 资料链接 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 学习需要&#xff1a;找一个开发板的资料作为基础 提示&#xff1a;以下是本篇文章正文内容&…

Redis 键值对操作全攻略

文章目录 一 . get 和 set二 . keys *三 . exists四 . del五 . expire六 . ttl七 . Redis 的 key 的过期策略八 . 定时器的实现8.1 基于优先级队列8.2 基于时间轮实现的定时器 九 . type十 . 数据库管理相关命令 Hello , 大家好 , 这个专栏给大家带来的是 Redis 系列 ! 本篇文章…

聊聊客户端/服务器与订阅/发布两大模型

正文 大家好&#xff0c;我是bug菌&#xff5e; 在项目开发中根据不同的应用场景通常会去尝试各种各样的通信方式&#xff0c;可能试来试去可能又回到了原地&#xff0c;而对于一个相对比较大的网络系统&#xff0c;不同的场景得考量不同的通信架构模型&#xff0c;那么今天就跟…

面向对象23种设计模式通俗理解

终点即是起点,自强不息! 设计模式的理解 设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 模式&#xff1a;在某些场景下&#xff0c;针对某类问题的某种通用的解决方案。 场景&#xff1a;项目所在的环境 问题&#xff1a;约束条件&#xff0c;项目目标…

慷智serdes调试记录(AIM951-958)

项目使用的是AIM951~958 951和958测试图谱输出 下面是两种1920*1080不同屏幕timing的951图谱输出&#xff08;一般我们提供屏幕timing&#xff0c;然后找慷智FAE要下寄存器配置&#xff0c;他有一个xcel文档&#xff0c;可以自己设置屏幕timing然后得到寄存器设置值&#xff…

Vue 3 Composition API 中如何正确添加表单项副本到数组

在 Vue 3 中&#xff0c;使用 Composition API 时&#xff0c;如果你尝试直接通过引用&#xff08;如 formState&#xff09;来填充 formList 数组&#xff0c;你会遇到一个问题&#xff1a;所有通过 addForm 方法添加的表单项实际上都是对 formState 的同一个引用。这意呀着&a…

K3 给K+增加日志(获取机器名和IP地址)

K3有个外挂系统是K&#xff0c;可以对数据进行修改&#xff0c;但是没有日志功能&#xff0c;谁修改了什么、什么时候修改的不知道&#xff0c;借鉴t_log做一个日志 1、先建一个日志表 CREATE TABLE [dbo].[kplus_log]([FlogID] [int] IDENTITY(1,1) NOT NULL,[FDate] [datet…

CST软件如何计算天线fidelity保真度?达索代理思茂信息

天线保真度&#xff08;fidelity&#xff09;是指辐射信号和输入信号的相似程度&#xff0c;用最大归一化值表示[-1&#xff0c;1]。单独天线的保真度用端口激励信号和空间探针接收信号计算&#xff1b;双天线的保真度可用接收天线端口信号和发射天线的激励信号计算。所以在一定…

基于深度学习的谣言监测系统-毕业设计

介绍 本项目是一款基于深度学习的谣言监测系统&#xff0c;利用 LSTM 模型实现对网络谣言的自动识别和监测。在互联网和社交媒体高速发展的背景下&#xff0c;本项目的推出具有重要意义&#xff0c;旨在提高谣言识别的准确性和效率&#xff0c;帮助公众快速辨别真伪信息&#…

Java中类的成员介绍

我的后端学习大纲 我的Java学习大纲 4.类的成员&#xff1a; 3.1.类的成员 -> 属性介绍&#xff08;成员变量&#xff09;&#xff1a; a.语法格式&#xff1a; 1.修饰符 数据类型 属性名 初始化值 ;2.说明1: 修饰符 常用的权限修饰符有&#xff1a;private、缺省、prot…

自动驾驶TPM技术杂谈 ———— 多目标跟踪

文章目录 介绍目标外观模型目标形状模型目标特征描述颜色特征梯度信息纹理特征光流特征边缘特征多特征融合 目标运动估计约束型模型描述型模型 目标检测线上检测器线下检测器 数据关联 介绍 目标跟踪技术一直以来都是计算机视觉领域中的一个核心分支。多目标跟着那个又因其技术…

【Linux】进程(第九篇)

目录 1.进程概述 2.进程的内存布局 3.Linux和Windows空间对比 4.进程控制块&#xff08;PCB&#xff09; 5.进程的状态 6.进程的状态转换 7.进程源语 8.fork() 1.进程概述 进程是操作系统进行资源分配的最小单位&#xff0c;而内存是进程运行必不可少的资源。那么&…

鱼哥好书分享活动第30期:一本书看完教你学习如何做B端竞品分析?《有效竞品分享》

鱼哥好书分享活动第30期&#xff1a;一本书看完教你学习如何做B端竞品分析&#xff1f;《有效竞品分享》 01 明确目标&#xff1a;案例分享&#xff1a;案例背景&#xff1a; 02 选择竞品&#xff1a;2.1 竞品的分类2.2 如何找到B端的竞品&#xff1f;1.找售前/销售沟通。2.各个…

【自由能系列(中级),代码模拟】预测编码的核心:三个关键方程式的详解

预测编码的核心&#xff1a;三个关键方程式的详解 ——探索预测编码背后的数学原理与应用 核心结论&#xff1a;预测编码是一种基于贝叶斯定理的理论框架&#xff0c;它通过三个关键方程式描述了大脑如何处理和解释来自环境的信号。这些方程式分别建立了贝叶斯定理的简化形式、…