当前位置: 首页 > news >正文

Java-模块二-1

print和println

printprintln 是两种常用的输出方法,主要用于在控制台上打印信息。它们的行为因编程语言而异,但通常具有以下特点:

Java中的printprintln

  • System.out.print():此方法用于打印输出内容到控制台,但与println不同的是,它不会在输出后自动换行。这意味着如果连续使用print,所有输出将出现在同一行上。

  • System.out.println():此方法除了打印输出内容外,还会在末尾添加一个换行符(newline),使得后续的输出会从新的一行开始。

常量

字符常量
字符常量:带单引号的’‘单引号中必须有有且只能有一个内容’tab键也算’
在编程中,常量是指程序运行期间其值不能被改变的标识符。它们有助于提高代码的可读性和维护性,并允许编译器进行优化。根据不同的标准,常量可以有不同的分类方式。下面从几个方面来解释常量及其分类:

1. 根据作用范围分类

  • 局部常量:仅在定义它的代码块(如函数、方法内部)内有效。这类常量通常用于限制其使用范围,以避免命名冲突或不必要的全局暴露。

  • 全局常量:在整个程序范围内都有效。在Java中,通过将常量声明为public static final,可以使该常量在不实例化类的情况下访问。

2. 根据数据类型分类

  • 基本数据类型的常量:包括整型(int, long等)、浮点型(float, double)、字符型(char)和布尔型(boolean)等。例如,在Java中定义一个整数常量final int MAX_SIZE = 100;

  • 字符串常量:虽然在技术上,String在Java中是对象而不是基本数据类型,但因其使用广泛而单独列出。例如,public static final String APP_NAME = "MyApplication";

  • 对象引用常量:指向不可变对象的引用。值得注意的是,尽管引用本身是固定的(即不能再指向其他对象),但如果对象本身是可变的,那么其内容是可以改变的。为了确保完全不可变,应使用不可变对象。

在编程中,常量间的运算与变量间的运算基本相同,允许你执行各种算术运算(如加法、减法、乘法、除法等)和逻辑运算。常量的运算结果可以在编译时确定(对于编译时常量),也可以在程序运行时计算得出(对于运行时常量)。下面以Java为例说明常量间的运算:

基本算术运算

/前后都是整数结果只取整数,前后只要有一个小数,结果就是小数
假设我们定义了几个整数类型的常量:

public class ConstantArithmetic {
    public static final int WIDTH = 10;
    public static final int HEIGHT = 20;

    public static void main(String[] args) {
        // 常量间的加法运算
        final int AREA = WIDTH * HEIGHT;
        System.out.println("Area: " + AREA); // 输出:Area: 200
        
        // 常量间的减法运算
        final int DIFFERENCE = HEIGHT - WIDTH;
        System.out.println("Difference: " + DIFFERENCE); // 输出:Difference: 10
        
        // 常量间的除法运算
        final int RATIO = HEIGHT / WIDTH;
        System.out.println("Ratio: " + RATIO); // 输出:Ratio: 2
        
        // 注意:整数除法会丢弃小数部分
        final int REMAINDER = HEIGHT % WIDTH;
        System.out.println("Remainder: " + REMAINDER); // 输出:Remainder: 0
    }
}

布尔运算

对于布尔类型的常量,可以进行逻辑运算如&&(逻辑与)、||(逻辑或)和!(逻辑非)。

public class ConstantLogic {
    public static final boolean FLAG_A = true;
    public static final boolean FLAG_B = false;

    public static void main(String[] args) {
        // 常量间的逻辑与运算
        final boolean resultAnd = FLAG_A && FLAG_B;
        System.out.println("Result AND: " + resultAnd); // 输出:Result AND: false
        
        // 常量间的逻辑或运算
        final boolean resultOr = FLAG_A || FLAG_B;
        System.out.println("Result OR: " + resultOr); // 输出:Result OR: true
        
        // 常量的逻辑非运算
        final boolean resultNot = !FLAG_A;
        System.out.println("Result NOT: " + resultNot); // 输出:Result NOT: false
    }
}

组合使用

常量间还可以进行组合运算,包括不同类型的常量之间的运算,只要这些操作是类型兼容的即可。

public class MixedConstants {
    public static final int VALUE_A = 5;
    public static final double VALUE_B = 3.2;

    public static void main(String[] args) {
        // 整型和浮点型常量的混合运算
        final double mixedResult = VALUE_A + VALUE_B;
        System.out.println("Mixed Result: " + mixedResult); // 输出:Mixed Result: 8.2
    }
}

需要注意的是,在进行运算时,要确保参与运算的数据类型是兼容的,并且了解类型转换规则,比如整数和浮点数之间的运算会导致整数被自动提升为浮点数。通过合理地利用常量间的运算,可以使代码更加简洁和易于理解。

3. 根据是否可以在编译期确定分类

  • 编译时常量:其值在编译时就可以确定,比如直接赋值的基本类型或字符串。这些常量在编译阶段就会被替换为其实际值,有助于提高性能。

  • 运行时常量:其值需要在程序运行过程中才能确定。例如,通过构造函数或初始化块赋值的常量。

4. 常见编程语言中的实现

  • Java:使用final关键字定义常量。对于基本类型和字符串,一旦赋值就不能再更改;对于对象引用,则表示引用地址不可变,但对象状态可能改变

变量

在编程中,变量是存储数据的容器,而变量的数据类型则决定了这个容器可以存储什么类型的数据、该数据如何被操作以及它占用多少内存空间。不同的编程语言支持不同类型的数据类型,并且每种数据类型都有其特定的用途和操作规则。下面将介绍一些常见的数据类型及其特性:

基本数据类型(Primitive Data Types)

  1. 整型(Integer Types)

    • 用于表示没有小数部分的数值。
    • 在Java中包括byte, short, int, long等,分别占用不同的字节大小,能够表示不同范围内的整数。
  2. 浮点型(Floating-Point Types)

    • 用于表示包含小数部分的数值。
    • Java中的floatdouble类型,其中double提供更高的精度和更大的范围。
  3. 字符型(Character Type)

    • 表示单个字符,如字母或符号。
    • 在Java中使用char类型表示,通常占用2个字节,并采用Unicode编码。
  4. 布尔型(Boolean Type)

    • 用于表示逻辑值,只有两个可能的值:truefalse
    • 在Java中通过boolean关键字定义。

引用数据类型(Reference Data Types)

  1. 类(Class)

    • 是创建对象的模板或蓝图,定义了属性和方法。
    • String类,虽然String的行为有时类似于基本数据类型,但它实际上是引用类型。
  2. 接口(Interface)

    • 定义了一组行为规范,但不实现这些行为。具体实现由实现了该接口的类完成。
  3. 数组(Array)

    • 可以存储固定数量的同类型元素的集合。
    • 数组的大小一旦确定,在Java中就不能更改。
  4. 枚举(Enum)

    • 特殊的数据类型,允许变量成为一组预定义常量。

其他数据类型

  • 包装类(Wrapper Classes):对于每种基本数据类型,Java提供了相应的包装类(如Integer, Double, Character, Boolean等),使得基本数据类型可以像对象一样处理。

  • 无类型(Void):主要用于方法返回类型,表示该方法不返回任何值。

数据类型的选取

选择合适的数据类型对程序的功能性和效率至关重要。例如,如果知道一个变量只会持有小范围内的整数值,可以选择较小的整型(如byteshort),以节省内存。相反,如果需要处理非常大或者非常高精度的数值,则应选择较大的类型(如longdouble)。

变量在编程中是非常基础且重要的概念,它用于存储数据值。通过变量,程序可以执行各种操作,如计算、条件判断等。以下是关于如何声明、初始化和使用变量的一些基本指南,以Java为例进行说明:

变量的声明

声明一个变量需要指定它的数据类型和名称。例如:

int age;
String name;
boolean isStudent;

这里分别声明了一个整型变量age、一个字符串变量name和一个布尔型变量isStudent

变量的初始化

变量声明后通常需要初始化,即赋予初始值。可以同时在声明时初始化:

int age = 20;
String name = "Alice";
boolean isStudent = true;

也可以先声明再赋值:

int age;
age = 20;

使用变量

一旦变量被初始化,就可以在程序中使用它们来进行各种操作,比如数学运算、逻辑判断等。

数学运算示例:
int x = 10;
int y = 20;
int sum = x + y;
System.out.println("Sum: " + sum); // 输出 Sum: 30
字符串连接示例:
String firstName = "John";
String lastName = "Doe";
String fullName = firstName + " " + lastName;
System.out.println("Full Name: " + fullName); // 输出 Full Name: John Doe
条件语句示例:
int temperature = 30;
if (temperature > 25) {
    System.out.println("It's warm outside.");
} else {
    System.out.println("It's cool outside.");
}

变量的作用域

变量的作用域决定了它可以在哪里被访问。作用域分为局部变量(在方法或代码块内定义)、成员变量(类内部但不在任何方法内定义)和静态变量(使用static关键字定义)。

  • 局部变量:只能在其声明的方法或代码块中访问。

  • 成员变量:可以在整个类的所有方法中访问。

  • 静态变量:属于类本身,所有实例共享同一份拷贝。

最佳实践

  • 命名规范:采用有意义的名字,并遵循语言的命名约定。例如,在Java中,变量名应以小写字母开头,多个单词间用驼峰命名法区分。

  • 初始化检查:确保在使用变量之前已经正确初始化,避免未初始化的变量导致运行时错误。

  • 作用域最小化:将变量的作用域限制到尽可能小的范围,有助于减少潜在的错误并提高代码的可读性。

在Java中,尽管String的行为有时类似于基本数据类型,例如可以使用+运算符进行连接操作,但实际上String是一个类,属于引用数据类型。
Java提供了自动装箱(Autoboxing)和拆箱(Unboxing)机制来简化基本数据类型和它们对应的包装类之间的转换过程,但没有为String提供类似的基本类型形式。

相关文章:

  • Java 对 PDF 文件添加水印
  • 利用 MATLAB/Simulink 建立完整的控制系统模型,并进行阶跃响应和负载扰动响应仿真
  • 算法与数据结构(和为K的子数组)
  • 深入解析 .NET 中的依赖项加载机制:原理、实现与最佳实践
  • 一人系统 之 为什么要做一人系统?
  • 认知突破、执行闭环与生态创新:DeepSeek、Manus与Coze的AI应用
  • 爬虫案例-爬取某站视频
  • Lua 的 Neovim 常用配置
  • Vue3 组件通信 $refs $parent
  • 【React】使用Swiper报错`Swiper` needs at least one child
  • 前端会话控制技术:cookie/session/token
  • 特斯拉Optimus 2.0:多模态感知与强化学习引领家庭场景变革
  • 【递归、搜索和回溯算法】专题三 :穷举VS暴搜VS深搜VS回溯VS剪枝
  • WebGL图形编程实战【2】:动态着色 × 纹理贴图技术揭秘
  • 学习Flutter:搭建第一个 Flutter 应用
  • StarRocks 主键(Primary Key)深度解析
  • MATLAB+Arduino控制小车直行+转向
  • 竞赛团队招募系统----山东大学web课程设计
  • cool-admin-midway 使用腾讯云cos上传图片
  • SAP SD学习笔记35 - ATP(可用性检查)的各种Pattern
  • 人民日报评外卖平台被约谈:摒弃恶性竞争,实现行业健康发展
  • 人民日报任平:从汽车产销、外贸大盘看中国经济前景
  • 中国-拉共体论坛第四届部长级会议北京宣言
  • 中巡组在行动丨①震慑:这些地区有官员落马
  • 兰州大学教授安成邦加盟复旦大学中国历史地理研究所
  • 农林生物安全全国重点实验室启动建设,聚焦重大有害生物防控等