【Java】掌握Java:基础概念与核心技能

news2024/9/23 2:54:31

文章目录

  • 前言:
  • 1. 注释
  • 2. 字面量
  • 3. 变量详解
    • 3.1 变量的定义
    • 3.2 变量里的数据存储原理
    • 3.3 数据类型
    • 3.4 关键字、标识符
  • 4. 方法
    • 4.1 方法是啥?
    • 4.2 方法的完整定义格式
    • 4.3 方法如何使用:
    • 4.4 方法的其他形式
    • 4.5 方法的其他注意事项
      • 4.5.1 方法是可以重载的
      • 4.5.2 无返回值的方法中可以直接通过单独的 `return`; 立即结束当前的方法执行。
  • 5. 类型转换
    • 5.1 自动类型转换
    • 5.2 强制类型转换
  • 6. 表达式的自动类型提升
  • 7. 输入输出
  • 总结:

前言:

在计算机编程的众多语言中,Java以其独特的优势和广泛的应用领域,成为了学习和使用的首选。对于初学者而言,理解Java的基础概念和语法是至关重要的。本文旨在为读者提供一个系统的Java基础知识概览,包括注释的使用、字面量的理解、变量的定义与数据类型、方法的运用、类型转换的规则以及表达式的自动类型提升等。通过这些基础知识的学习,读者将能够构建起对Java编程语言的基本认识,为进一步的学习和实践打下坚实的基础。

1. 注释

  • 单行注释://
  • 多行注释:/* */
  • 文档注释:/** */

2. 字面量

字面量:就是程序中能直接书写的数据,学这个知识的重点是:搞清楚Java程序中数据的书写格式
在这里插入图片描述

public static void printLiteral() {
    // 输出几个常见的字面量
    // 1.整型字面量
    System.out.println(1);
    // 2.浮点型字面量
    System.out.println(1.0);
    // 3.布尔型字面量
    System.out.println(true);
    // 4.字符型字面量
    System.out.println('A');
    // 5.字符型字面量,需要使用转义字符
    System.out.println("\"");
    System.out.println("hallo\n world");
    System.out.println("hello\tworld");
}

3. 变量详解

3.1 变量的定义

// 定义一个方法,来学习变量的定义
public static void printVariable() {
    // 定义一个变量,保存一个整数值
    int num = 10;
    // 定义一个变量,保存一个浮点值
    double score = 98.5;
    // 定义一个变量,保存一个字符值
    char gender = '男';
    // 定义一个变量,保存一个布尔值
    boolean flag = true;
    // 定义一个变量,保存一个字符串值
    String name = "张三";
    // 打印变量的值
    System.out.println(num);
    System.out.println(score);
    System.out.println(gender);
    System.out.println(flag);
    System.out.println(name);

    System.out.println("--------------------------------");
}

3.2 变量里的数据存储原理

char ch = 'A'; // 存的是65的二进制
System.out.println(ch + 1); // 输出:66
char ch2 = 'a'; // 存的是97的二进制
System.out.println(ch2 + 1); // 输出:98
// 程序中可以直接写进制数据
// 二进制
int i1 = 0b101; // 5
System.out.println(i1);
// 八进制
int i2 = 010; // 8
System.out.println(i2);

// 十六进制
int i3 = 0xA; // 10
System.out.println(i3);

3.3 数据类型

  1. 基本数据类型
    在这里插入图片描述
// 设计一个方法,打印出8种数据类型定义的变量
    public static void printVariable() {
        // 1. 整型
        byte b = 10;
        short s = 20;
        int i = 30;
        // 注意:Java中long型数据需要加L,否则默认为int型
        long l1 = 5346234632L;
        long l = 40;
        // 2. 浮点型
        // 注意:Java中float型数据需要加f,否则默认为double型
        float f = 50.5f;
        double d = 60.6;
        // 3. 字符型
        char c = 'a';
        // 4. 布尔型
        boolean bool = true;
        

        System.out.println(b);
        System.out.println(s);
        System.out.println(i);
        System.out.println(l1);
        System.out.println(l);
        System.out.println(f);
        System.out.println(d);
        System.out.println(c);
        System.out.println(bool);
    }
  1. 引用数据类型

3.4 关键字、标识符

  1. 关键字
    Java 的关键字是语言中已经预定义的词,它们具有特殊的语法意义。关键字不能用作标识符(例如变量名、方法名或类名)。以下是一些常见的 Java 关键字的例子:

public:用来声明公共访问权限。
class:用于定义一个类。
interface:用于定义一个接口。
void:表示一个方法不返回任何值。
intfloatdoublecharboolean:基本数据类型的声明。
ifelseswitch:控制流语句。
forwhile:循环语句。
new:用于创建新的对象实例。
return:从方法返回值或结束方法执行。

  1. 标识符
    标识符是在 Java 程序中由程序员定义的名称,用于给变量、类、方法、包等命名。标识符遵循一定的规则:
  • 可以包含字母、数字、下划线 _ 和美元符号 $。
  • 必须以字母、下划线或美元符号开头,不能以数字开头。
  • 区分大小写,例如 MyVariable 和 myvariable 是两个不同的标识符。
  • 不能使用 Java 的关键字作为标识符。
  • 虽然不是强制要求,但建议标识符应尽量有意义,并且遵循 Java 的命名约定,例如变量名通常使用小驼峰式命名法(camelCase),即第一个单词首字母小写,后续每个单词首字母大写。

4. 方法

4.1 方法是啥?

方法是一种用于执行特定任务或操作得代码块,代表一个功能,它可以接收数据进行处理,并返回一个处理后得结果。

4.2 方法的完整定义格式

在这里插入图片描述

4.3 方法如何使用:

方法必须调用才能执行,调用格式:方法名称(数据)

public static void main(String[] args) {
    // 目标:掌握方法的定义和调用
    int sum = add(10, 20);
    System.out.println(sum);

    System.out.println("--------------------------");
}

// 定义一个方法,求任意两个整数的和并返回
public static int add(int a, int b) {
    return a + b;
}

4.4 方法的其他形式

// 需求:打印3行"Hello World",不需要返回值,不需要参数
// 注意:如果方法没有返回值,那么调用的时候,可以省略括号中的参数
// 无参数,无返回值
public static void printHelloWorld() {
    System.out.println("Hello World");
    System.out.println("Hello World");
    System.out.println("Hello World");
}

// 需求3:获取一个指定位数的验证码返回
// 掌握方法的定义格式
// 需要接收数据吗? 需要,需要接收位数。 int len
// 需要返回数据吗? 需要,返回一个验证码。 String
// 有参数有返回值的方法
public static String getVerifyCode(int len) {
    String code = "";
    for (int i = 0; i < len; i++) {
        int num = (int) (Math.random() * 10);
        code += num;
    }
    return code;
}

4.5 方法的其他注意事项

4.5.1 方法是可以重载的

一个类中,出现多个方法的名称相同,但是它们的形参列表是不同的,那么这些方法就称为方法重载了

// 定义一个方法,打印一个整数
public static void print(String str) {
    System.out.println(str);
}

// 定义一个重载方法
public static void print(int a) {
    System.out.println(a);
}

// 定义一个重载方法
public static void print(double b) {
    System.out.println(b);
}
// 注意:方法重载只关心方法名称相同,形参列表不同(类型不同,个数不同,顺序不同),其他都无所谓

// 需求:发射导弹
public static void fire(int x, int y) {
    System.out.println("发射导弹:" + x + "," + y);
}

// 定义一个重载方法
public static void fire(int x, int y, int z) {
    System.out.println("发射导弹:" + x + "," + y + "," + z);
}

4.5.2 无返回值的方法中可以直接通过单独的 return; 立即结束当前的方法执行。

// 设计一个除法功能
public static void div(int a, int b) {
    if (b == 0) {
        System.out.println("除数不能为0");
        return; // 提前结束方法, 卫语言风格
    }
    System.out.println(a / b);
}

5. 类型转换

5.1 自动类型转换

什么是自动类型转换,为什么要自动类型转换?

  • 类型范围小的变量,可以直接赋值类型范围大的变量。
    在这里插入图片描述
    自动类型转换在计算机中的执行原理:
    在这里插入图片描述

5.2 强制类型转换

什么是强制类型转换,为什么要进行强制类型转换?

  • 类型范围大的变量,不可以直接赋值类型范围小的变量,会报错,需要强制类型转换过去
int i = 20;
// print3(i); // 类型范围大的变量不能直接赋值给类型范围小的变量,会报错!

// 强制类型转换,类型 变量2 = (类型)变量1
print3((byte) i); // public static void print3(byte a)

// 强转可能导致数据溢出
print3((byte) 129); // 打印-12

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

  • 强制类型转换可能造成数据(丢失)溢出;浮点强转成整数,直接丢掉小数部分,保留整数部分返回
double k = 3.14;
int l = (int) k; // 浮点数转整型,小数部分会被截掉
System.out.println(l); // 3

6. 表达式的自动类型提升

在这里插入图片描述

// 需求:接收各种类型的数据运算
public static double calc(int a, int b, double c, char r) {
	// 表达式的最终结果类型式由最高类型决定的
    return a + b +c + r;
}

public static int calc2(byte a, byte b) {
	// byte short char 运算时会直接提升成 int 运算
    return a + b;
}

public static byte calc3(byte a, byte b) {
    byte c = (byte)( a + b); // 不建议这样写
    return c;
}

7. 输入输出

  • 输出:把程序中的数据展示出来。
System.out.println("Hello World!");
  • 输入:程序读取用户键盘输入的数据。

通过 java 提供的 Scanner 程序来实现

// 需求:写一个方法,可以让用户键盘输入用户名和年龄,然后打印出来。
public static void printUserInfo() {
    // 2. 创建对象(抄写这一行代码,得到一个Scanner扫描对象)
    Scanner sc = new Scanner(System.in);

    // 3.获取用户输入
    System.out.println("请输入用户名:");
    // 让程序暂停,等待用户输入一个字符串,只到输入回车键,把名字交给变量name记住再继续执行。
    String name = sc.next();
    System.out.println("请输入年龄:");
    // 让程序暂停,等待用户输入一个整数,只到输入回车键,把年龄交给变量age记住再继续执行。
    int age = sc.nextInt();

    // 4. 打印
    System.out.println("用户名:" + name + ",年龄:" + age);
}

在这里插入图片描述

总结:

本文详细介绍了Java编程的基础知识,从基础的注释和字面量开始,逐步深入到变量的定义、数据存储原理、数据类型、关键字与标识符的规则。在方法部分,我们探讨了方法的定义、调用、重载以及如何通过参数和返回值实现功能的封装。类型转换章节则解释了自动类型转换和强制类型转换的原理及其应用,同时指出了在类型转换过程中可能遇到的数据溢出问题。表达式的自动类型提升让我们理解了在不同数据类型参与运算时Java如何处理类型提升。最后,输入输出部分展示了如何通过Scanner类实现用户与程序的交互。

通过本文的学习,读者应该能够掌握Java编程的基础技能,并能够将这些知识应用到实际的编程实践中。Java编程是一个不断学习和探索的过程,希望本文能够作为读者学习Java的起点,激励读者不断深入探索Java的更多高级特性和应用。随着实践的积累,读者将能够更加熟练地运用Java解决实际问题,开发出高效、可靠的软件应用。

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

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

相关文章

WebMagic:强大的Java网络爬虫框架

上班苦上班累&#xff0c;上班就想打瞌睡。 在当今信息爆炸的时代&#xff0c;数据的获取和处理变得越来越重要。网络爬虫作为获取网络数据的重要工具&#xff0c;已经成为许多开发者和数据科学家的必备技能。今天&#xff0c;我们将介绍一个广受欢迎的Java网络爬虫框架——We…

2024PDF内容修改秘籍:工具推荐与技巧分享

现在我们使用PDF文档的频率越来越高了&#xff0c;很多时候收到的表格之类的资料也都是PDF格式的&#xff0c;如果进行转换之后编辑再转换为PDF格式还是有点麻烦的&#xff0c;那么pdf怎么编辑修改内容呢&#xff1f;这篇文章我将介绍几款可以直接编辑PDF文件的工具来提高我们的…

鸿蒙开发(NEXT/API 12)【跨设备互通NDK开发】协同服务

跨设备互通提供跨设备的相机、扫描、图库访问能力&#xff0c;平板或2in1设备可以调用手机的相机、扫描、图库等功能。 说明 本章节以拍照为例展开介绍&#xff0c;扫描、图库功能的使用与拍照类似。 用户在平板或2in1设备上使用富文本类编辑应用&#xff08;如&#xff1a;…

JVM —— 类加载器的分类,双亲委派机制

文章目录 一、类加载器的分类【理解】1.1 概述1.2 JDK8及之前的版本1.2.1 启动类加载器1.2.2 扩展类加载器和应用程序类加载器扩展类加载器应用程序类加载器 1.3 JDK9之后的类加载器1.4 ClassLoader 中的两个方法【应用】 二、双亲委派模型【理解】2.1 什么是双亲委派机制面试题…

在vue中嵌入vitepress,基于markdown文件生成静态网页从而嵌入社团周报系统的一些想法和思路

什么是vitepress vitepress是一种将markdown文件渲染成静态网页的技术 其使用仅需几行命令即可 //在根目录安装vitepress npm add -D vitepress //初始化vitepress&#xff0c;添加相关配置文件&#xff0c;选择主题&#xff0c;描述&#xff0c;框架等 npx vitepress init //…

9.20日学习记录及相关问题解答

部分一 今天看了一本古老的书。学到了一些有关计算机的远古的知识。弥补了一些之前没有意识到的空白点。 原来上个世纪就有AI这个东西了 现阶段的主流模式&#xff0c;在许多年前其实是将来要发展的对象。 B/S指的是客户机/服务器结构模式 C/S是在B/S基础上发展过来的。三层结…

兼容多个AI应用接口,支持用户自定义切换AI接口

项目背景 2023年ChatGPT横空出世&#xff0c;给IT行业造成了巨大的反响。我第一次发现这个ChatGPT有着如此神奇的功能&#xff08;智能对话&#xff0c;知识问答&#xff0c;代码生成&#xff0c;逻辑推理等&#xff09;&#xff0c;我感到非常吃惊&#xff01;经过一番学习和…

一文看懂 Python 正则表达式,解决你的字符串难题!(Python正则表达式使用指南)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 Re正则 📒📝 re 模块简介📝 正则表达式语法总结📝 re 模块参数总结📝 常用方法📝 正则表达式的技巧与注意事项📝 使用 `re.compile()` 实现编译模式⚓️ 相关链接 ⚓️📖 介绍 📖 在编程世界中,有一种强大的…

Lanterns (dp 紫 线段树 二分 维护dp)

Lanterns - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 让所有点被覆盖&#xff0c;那么状态可以设计成覆盖一段前缀&#xff0c;并且中间不允许出现断点 由于CF崩了&#xff0c;所以暂时没提交代码。 记f(i) 为前 i 个灯笼点亮的最长前缀。 由于答案具有保留性&#xff…

9.22算法题数组篇

数组的遍历 485.最大连续1的个数 题解 class Solution {public int findMaxConsecutiveOnes(int[] nums) {int maxcount0,count0;for (int i 0;i<nums.length;i){if(nums[i]1){count;}else{maxcountMath.max(maxcount,count);count0;}}maxcountMath.max(maxcount,count);r…

基于kubernetes-nmstate配置节点网络

kubernetes-nmstate 简介 kubernetes-nmstate 通过 Kubernetes API 驱动的声明式节点网络配置。 随着混合云的出现&#xff0c;节点网络设置变得更加具有挑战性。不同的环境有不同的网络要求。 容器网络接口&#xff08;CNI&#xff09;标准实现了不同的解决方案&#xff0c;…

【MySQL】 索引

MySQL与磁盘存储 MySQL就是提供数据存储服务的&#xff0c;而最终存储的位置就是磁盘&#xff0c;但是磁盘存储速度慢&#xff0c;所以MySQL如何与磁盘交互&#xff0c;提高数据存储效率&#xff0c;即是MySQL和磁盘交互。 磁盘基础知识回顾 物理结构 磁道&#xff1a;磁盘是…

AI运动小程序开发常见问题集锦一

截止到现在写博文时&#xff0c;我们的AI运动识别小程序插件已经迭代了23个版本&#xff0c;成功应用于健身、体育、体测、AR互动等场景&#xff1b;为了让正在集成或者计划进行功能扩展优化的用户&#xff0c;少走弯路、投入更少的开发资源&#xff0c;我们归集了一部分集中的…

想复制其他设备上的软件?看这里!-未来之窗行业应用跨平台架构

一、多好用的软件&#xff0c;已经没有apk安装包&#xff0c;很遗憾 1. 用户体验受损 &#xff1a;对于那些曾经依赖并喜爱这些软件的用户来说&#xff0c;无法再获取和使用它们&#xff0c;极大地影响了用户的日常体验和工作效率。 2. 功能缺失 &#xff1a;可能导致特定的功…

Kubernetes实战——集群监控和可视化管理

目录 一、Kube-Prometheus 1、版本兼容性介绍 2、安装 kube-prometheus 3、安装Ingress&#xff0c;实现访问 二、K8s安装ELK日志收集 1、安装Elasticsearch 2、安装Logstash 3、安装Filebeat 4、安装Kibina 三、Dashboard安装与使用 1、安装 2、创建token 3、使用 …

【算法业务】互联网风控业务中的续贷审批模型(融合还款意愿分层的逾期风险识别模型)

1、背景说明 本文旨在提出一种针对风控催收受限情况下&#xff0c;如何提升风控审批模型的风险识别能力&#xff0c;以缓解贷后催收的压力&#xff0c;降低贷款资金坏账的风险。这篇工作依然是很早期的项目&#xff0c;分享的目的一方面做笔记&#xff0c;另一方面则是希望其中…

[Redis] 渐进式遍历+使用jedis操作Redis+使用Spring操作Redis

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

一种求解无人机三维路径规划的高维多目标优化算法,MATLAB代码

在无人机三维路径规划的研究领域&#xff0c;高维多目标优化算法是一个重要的研究方向。这种算法能够同时考虑多个目标&#xff0c;如航迹距离、威胁代价、能耗代价以及多无人机协同性能等&#xff0c;以实现无人机路径的最优规划。 无人机路径规划算法的研究进展表明&#xf…

22、Raven2

难度 中 目标 root权限 4个flag 使用Virtualbox启动 kali 192.168.86.105 靶机 192.168.86.106 信息收集 看到111端口有一个rpc相关的东西&#xff0c;去网上查看了一下是什么服务 通过在网上搜索发现这是一个信息泄露的漏洞&#xff0c;上面的这个端口其实就是泄露的端口和…

Python | Leetcode Python题解之第416题分割等和子集

题目&#xff1a; 题解&#xff1a; class Solution:def canPartition(self, nums: List[int]) -> bool:n len(nums)if n < 2:return Falsetotal sum(nums)if total % 2 ! 0:return Falsetarget total // 2dp [True] [False] * targetfor i, num in enumerate(nums…