Java基础-基础语法

1、概述

        一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。

  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为和状态。
  • 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
  • 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。

2、第一个Java程序

public class HelloWorld {
    /* 第一个Java程序
     * 它将输出字符串 Hello World
     */
    public static void main(String[] args) {
        System.out.println("Hello World"); // 输出 Hello World
    }
}

 在这段代码中:

class就是类的关键字;

HelloWorld就是类名;

main就是方法名;

main后面的括号中的内容(String[] args)就是方法的参数;

大括号中的内容,就是方法体,也就是要做什么。

3、注释

        Java 注释是一种在 Java 程序中用于提供代码功能说明的文本。

        注释不会被编译器包含在最终的可执行程序中,因此不会影响程序的运行。

        注释是良好的编程习惯,它们帮助程序员更容易地理解代码的用途和功能,并且在团队协作中非常有用。

        Java 注释主要有三种类型:

  • 单行注释
  • 多行注释
  • 文档注释

3.1、单行注释

        单行注释以双斜杠 // 开始:

实例

        // 这是一个单行注释 int x = 10; // 初始化一个变量x为10

3.2、多行注释

        多行注释以 /*开始,以 */结束:

实例

        /* 这是一个多行注释 可以用来注释多行代码 */ int y = 20; // 初始化一个变量y为20

3.3、文档注释

                文档注释以 /** 开始,以 */ 结束,通常出现在类、方法、字段等的声明前面,用于生成代码文档,这种注释可以被工具提取并生成 API 文档,如 JavaDoc。

实例

        /** * 这是一个文档注释示例 * 它通常包含有关类、方法或字段的详细信息 */ public class MyClass { // 类的成员和方法 }

        文档注释的格式通常包含一些特定的标签,如 @param 用于描述方法参数,@return 用于描述返回值,@throws 用于描述可能抛出的异常等等,这些标签有助于生成清晰的API文档,以便其他开发者能够更好地理解和使用你的代码。

4、对象与类

4.1、对象

        此处的对象不是女朋友,是一个事实存在的事物,有对应的属性和行为,比如一个人,人的属性有:姓名、性别、年龄等,行为有:吃、穿、住、行、等。

4.2、类

        在Java中,类就是一个模板,它描述一类对象的行为和状态。比如男人,男人就是一类属性中的性别为男的人。

5、面向对象

5.1、概念

        面向对象是一种程序设计思想,就是把现实中的事务都抽象成为程序设计中的“对象”,其基本思想是一切皆对象,是一种“自下而上”的设计语言,先设计组件,再完成拼装。

现在很多语言都是面向对象的,如Java、C++、C#、Python等。

5.2、面向对象的优缺点

        优点: 1、提升程序的解耦合程度,进而增强程序的可扩展性

        缺点: 1、设计复杂 2、容易过度设计

5.3三大主要特征(理解)

封装、继承、多态

5.3.1、封装

封装主要有两种含义:

        1、把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单元(即对象)中;

        2、另一层含义指“信息隐藏”,把不需要让外界知道的信息隐藏起来,有些对象的属性及行为允许外界用户知道或使用,但不允许更改,而另一些属性或行为,则不允许外界知晓,或只允许使用对象的功能,而尽可能隐藏对象的功能实现细节。

封装的优点

  • 良好的封装能够减少耦合,符合程序设计追求“高内聚,低耦合”。
  • 类内部的结构可以自由修改。
  • 可以对成员变量进行更精确的控制。
  • 隐藏信息实现细节。

5.3.2、继承

        继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

继承的好处:

(1)提高类代码的复用性。

(2)提高了代码的维护性。

(3)使得类和类产生了关系,是多态的前提(它也是继承的一个弊端,类的耦合性提高了。

继承的特性

  • 子类拥有父类非 private 的属性、方法。
  • 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
  • 子类可以用自己的方式实现父类的方法,即重写父类方法。
  • Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 C 类,所以按照关系就是 C 类是 B 类的父类,B 类是 A 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。
  • 继承可以使用 extends 和 implements 这两个关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承object(这个类在 java.lang 包中,所以不需要 import)祖先类。
  • 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)。

5.3.3、多态

        所谓多态,就是指一个类实例的相同方法在不同情形下有不同的表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。

        这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

        最常见的多态就是将子类传入父类参数中,当运行时调用父类方法时,通过传入的子类决定具体的内部结构或行为。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

No189.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

十三、W5100S/W5500+RP2040树莓派Pico<FTP Server>

文章目录 1. 前言2. 相关简介2.1 简述2.2 原理2.3 优点2.4 应用 3. WIZnet以太网芯片4. FTP Server运行测试4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 测试现象 5. 注意事项6. 相关链接 1. 前言 在当今的信息化时代,互联网已经成为人们生活、工作不可…

轻量级 SSO 方略:基于 OIDC 规范(二)

上一篇文章介绍了 SSO 相关的基础数据,这样有了 ClientId 和密钥后,我们就要准备客户端这边的代码。客户端当前指的便是一个网站(也就是 RP),这个网站要求有会员功能,典型地网站导航上通常会有“注册”或“…

深度学习之基于YoloV5电梯电动车预警系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习在电梯电动车预警系统中的应用是一个复杂的系统工程,涉及计算机视觉、机器学习、深度学习等领域…

CLIP:万物分类(视觉语言大模型)

本文来着公众号“AI大道理” ​ 论文地址:https://arxiv.org/abs/2103.00020 传统的分类模型需要先验的定义固定的类别,然后经过CNN提取特征,经过softmax进行分类。然而这种模式有个致命的缺点,那就是想加入新的一类就得重新定义…

14:00面试,14:08就出来了,问的问题有点变态

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到8月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%,…

【C++】函数指针 ④ ( 函数指针做函数参数 | 使用函数指针间接调用函数 | 函数指针做参数 | 函数指针类型的本质 | 函数指针做参数意义 )

文章目录 一、函数指针做函数参数1、使用函数指针间接调用函数2、函数指针做参数3、函数指针类型的本质4、函数指针做参数意义 二、代码示例 - 函数指针做函数参数 一、函数指针做函数参数 1、使用函数指针间接调用函数 在上一篇博客 【C】函数指针 ③ ( 函数指针语法 | 函数名…

说说React Jsx转换成真实DOM过程?

一、是什么 react通过将组件编写的JSX映射到屏幕,以及组件中的状态发生了变化之后 React会将这些「变化」更新到屏幕上 在前面文章了解中,JSX通过babel最终转化成React.createElement这种形式,例如: <div> < img src="avatar.png" className="…

VS Code设置技巧

基础设置 中文界面 安装扩展&#xff1a;Chinese(Simplified) Language Pack 自动换行 文件 - 首选项 - 设置&#xff0c;搜索wrap&#xff0c;找到Editor: Word Wrap&#xff0c;将其更改为on。

【数据结构】非递归实现二叉树的前 + 中 + 后 + 层序遍历(听说面试会考?)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;数据结构 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&…

如何在OpenWrt上部署uhttpd搭建web服务器,并实现公网远程访问

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

数据分析 - 思考题

上班路上刷到的有趣题

BEVFusion简介、环境配置与安装以及遇到的各种报错处理

BEVFusion简介、环境配置与安装以及遇到的各种报错处理 BEVFusion简介BEVFusion环境配置与安装报错解决 BEVFusion简介 针对点云投射到图像的多模态融合和图像投射到点云的多模态融合&#xff0c;前者会损失空间几何信息&#xff0c;后者会损失图像语义信息&#xff0c;这两种…

DMDEM部署说明-详细步骤-(DM8达梦数据库)

DMDEM部署说明-详细步骤-DM8达梦数据库 环境介绍1 部署DM8 数据库1.1 创建一个数据库作为DEM后台数据库1.2 创建数据库用户 DEM1.3 使用DEM用户导入dem_init.sql 2 配置tomcat2.1 配置/tomcat/conf/server.xml2.2 修改jvm启动参数 3 配置JAVA 1.8及以上版本的运行时环境3.1 配置…

【狂神说Java】SpringCloud | Netflix | Eureka | Ribbon | Feign | Zull | config | 详细笔记(全)

✅作者简介&#xff1a;CSDN内容合伙人、信息安全专业在校大学生&#x1f3c6; &#x1f525;系列专栏 &#xff1a;狂神说Java &#x1f4c3;新人博主 &#xff1a;欢迎点赞收藏关注&#xff0c;会回访&#xff01; &#x1f4ac;舞台再大&#xff0c;你不上台&#xff0c;永远…

基于连续Hopfield神经网络优化——旅行商问题优化计算

大家好&#xff0c;我是带我去滑雪&#xff01; 利用神经网络解决组合优化问题是神经网络应用的一个重要方面。所谓组合优化问题&#xff0c;就是在给定约束条件下&#xff0c;使目标函数极小&#xff08;或极大&#xff09;的变量组合问题。将Hopfield网络应用于求解组合优化问…

c++四种类型转换

首先我们要先引入上行转换和下行转换的概念 所谓上行转换&#xff0c;即将原来的子类指针转换成父类指针&#xff1b; 下行转换即将原来的父类指针转换成子类指针 由于子类对象的空间较大&#xff0c;所以把子类强制转换父类给父类指针赋值时&#xff0c;父类指针对象能读取…

Android图形系统之X11、Weston、Wayland、Mesa3D、ANGLE、SwiftShader介绍(十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

力扣刷题-二叉树-翻转二叉树

226.翻转二叉树 翻转一棵二叉树。 思路 参考&#xff1a; https://www.programmercarl.com/0226.%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.html#%E6%80%9D%E8%B7%AF 如果要从整个树来看&#xff0c;翻转还真的挺复杂&#xff0c;整个树以中间分割线进行翻转&#xf…

基于springboot+vue健身管理系统

基于springbootvue健身管理系统 摘要 健身管理系统是一款基于Spring Boot和Vue.js的全栈应用&#xff0c;致力于为用户提供全面、个性化的健身管理体验。通过Spring Boot构建的后端&#xff0c;系统提供了强大的RESTful API支持&#xff0c;包括用户管理、健身计划制定和健康数…