Java基础语法(一)

一、基础语法

  1. 数据类型

    • 基本数据类型:

      • 整数类型:包括 byte(1 字节,范围是 - 128 到 127)、short(2 字节,范围是 - 32768 到 32767)、int(4 字节,范围是 - 2147483648 到 2147483647)和 long(8 字节)。例如,定义一个 int 类型的变量int num = 10;

      • 浮点类型:float(4 字节)和 double(8 字节)。float 类型的数值后面需要加fF,如float f = 3.14f;,而 double 类型可以直接写数值,如double d = 3.1415926;

      • 字符类型:char(2 字节),用于表示单个字符,用单引号括起来,如char c = 'A';

      • 布尔类型:boolean,只有truefalse两个值,用于逻辑判断,如boolean flag = true;

    • 引用数据类型:包括类、接口、数组等。例如,定义一个字符串(String 是一个类,属于引用数据类型)String str = "Hello";

  2. 变量和常量

    • 变量:是程序运行过程中可以改变的值的存储单元。变量在使用前需要先声明,声明格式为数据类型 + 变量名,如int age;,然后可以对变量进行赋值,age = 20;也可以在声明时同时赋值int height = 170;

    • 常量:是程序运行过程中不能改变的值。在 Java 中,用final关键字定义常量,例如final double PI = 3.14159;,一旦定义后,PI 的值就不能再被修改。

  3. 运算符

    • 算术运算符:包括加(+)、减(-)、乘(*)、除(/)、取余(%)。例如,int a = 10, b = 3; int result1 = a + b;(结果为 13),int result2 = a % b;(结果为 1)。

    • 关系运算符:用于比较两个值,包括等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)。返回值是布尔类型,如boolean compare = (5 > 3);(结果为true)。

    • 逻辑运算符:用于连接多个布尔表达式,包括与(&&)、或(||)、非(!)。例如,boolean andResult = (true && false);(结果为false),boolean orResult = (true || false);(结果为true)。

    • 位运算符:对整数的二进制位进行操作,包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)、右移(>>)和无符号右移(>>>)。例如,int num1 = 5; //二进制为0101,int num2 = 3; //二进制为0011,int bitAndResult = num1 & num2;(结果为 1,二进制为 0001)。

  4. 控制语句

    • 条件语句:

      • if - else 语句:根据条件执行不同的代码块。例如,if (age >= 18) { System.out.println("成年人"); } else { System.out.println("未成年人"); }

      • switch 语句:用于多分支选择,它根据表达式的值来匹配多个case常量。例如,int day = 3; switch(day) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; default: System.out.println("其他"); break; }

    • 循环语句:

      • for 循环:用于已知循环次数的情况。格式为for(初始化表达式; 条件表达式; 更新表达式) {循环体}。例如,for(int i = 0; i < 10; i++) { System.out.println(i); }会输出 0 到 9。

      • while 循环:在条件为真时执行循环体。例如,int j = 0; while(j < 5) { System.out.println(j); j++; }会输出 0 到 4。

      • do - while 循环:先执行一次循环体,然后再判断条件。例如,int k = 0; do { System.out.println(k); k++; } while(k < 3);会输出 0、1、2。

二、面向对象编程(OOP)概念

  1. 类和对象

    • :是一种抽象的数据类型,用于定义对象的属性和行为。例如,定义一个Person类,包含属性(成员变量)nameage,以及行为(方法)speak

class Person {String name;int age;void speak() {System.out.println("我叫" + name + ", 我今年" + age + "岁。");}
}
  • 对象:是类的实例。可以通过new关键字创建对象,例如Person p = new Person(); p.name = "张三"; p.age = 20; p.speak();

  1. 封装、继承和多态

    • 封装:是将数据(属性)和操作数据的方法封装在一起,对外部隐藏实现细节。在 Java 中,通过访问修饰符(privateprotectedpublic)来控制访问权限。例如,将Person类中的nameage属性设为private,并提供publicgetset方法来访问和修改属性。

class Person {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}void speak() {System.out.println("我叫" + name + ", 我今年" + age + "岁。");}
}
  • 继承:是一种创建新类(子类)的方式,子类继承父类的属性和方法。例如,定义一个Student类继承Person类,Student类可以继承Person类的nameage属性以及speak方法,并且可以添加自己的属性和方法。

class Student extends Person {int grade;void study() {System.out.println("我是" + grade + "年级的学生。");}
}
  • 多态:是指同一个行为具有多种不同表现形式。在 Java 中有两种实现方式,方法重载和方法重写。

    • 方法重载:是在同一个类中,方法名相同,但参数列表不同(参数个数、类型、顺序不同)。例如,在一个Calculator类中有两个add方法,int add(int a, int b) { return a + b; }double add(double a, double b) { return a + b; }

    • 方法重写:是在子类中重新定义父类中已经存在的方法,方法签名(方法名、参数列表、返回类型)必须相同。例如,Student类重写Person类的speak方法,@Override void speak() { System.out.println("我是学生,我叫" + name + ", 我今年" + age + "岁。"); }

三、异常处理

  1. 异常类型

    • 检查异常(Checked Exception):是编译器要求必须处理的异常,例如IOException(用于处理输入输出异常)。如果一个方法可能抛出检查异常,要么在方法内部用try - catch块处理,要么在方法声明中用throws关键字声明抛出异常。

    • 运行时异常(Runtime Exception):是在程序运行过程中可能出现的异常,例如NullPointerException(空指针异常)、ArrayIndexOutOfBoundsException(数组下标越界异常)。这些异常可以不进行显式处理,但为了程序的健壮性,最好还是进行处理。

  2. 异常处理机制

    • try - catch - finally 块try块中放置可能抛出异常的代码,catch块用于捕获并处理异常,finally块中的代码无论是否发生异常都会执行。例如,

try {int[] arr = new int[3];System.out.println(arr[5]);
} catch (ArrayIndexOutOfBoundsException e) {System.out.println("数组下标越界");
} finally {System.out.println("这部分代码总会执行");
}

四、集合框架

  1. List 接口

    • ArrayList:是一个动态数组,它可以自动扩容。可以通过索引访问元素,元素可以重复。例如,

ArrayList<String> list = new ArrayList<>();
list.add("苹果");
list.add("香蕉");
System.out.println(list.get(0));
  • LinkedList:是一个双向链表实现的集合,它在插入和删除元素时效率较高,特别是在列表头部或尾部操作。例如,LinkedList<Integer> linkedList = new LinkedList<>(); linkedList.addFirst(1); linkedList.addLast(2);

  1. Set 接口

    • HashSet:是基于哈希表实现的集合,它不允许元素重复,元素的存储顺序是无序的。例如,HashSet<String> set = new HashSet<>(); set.add("红色"); set.add("蓝色");

    • TreeSet:是基于红黑树实现的集合,它不允许元素重复,并且元素是按照自然顺序或者自定义比较器进行排序的。例如,TreeSet<Integer> treeSet = new TreeSet<>(); treeSet.add(3); treeSet.add(1);(元素会按照从小到大的顺序存储)。

  2. Map 接口

    • HashMap:是基于哈希表实现的键值对集合,键是唯一的,值可以重复。例如,HashMap<String, Integer> map = new HashMap<>(); map.put("张三", 20); map.put("李四", 22);

    • TreeMap:是基于红黑树实现的键值对集合,键按照自然顺序或者自定义比较器进行排序。例如,TreeMap<String, Integer> treeMap = new TreeMap<>(); treeMap.put("王五", 25); treeMap.put("赵六", 23);(键会按照字典顺序排序)。

五、输入输出(I/O)操作

  1. 字节流和字符流

    • 字节流:用于处理二进制数据,以字节为单位进行读写。例如,FileInputStream用于从文件中读取字节数据,FileOutputStream用于向文件中写入字节数据。

try {FileInputStream fis = new FileInputStream("input.txt");int data;while((data = fis.read())!= - 1) {System.out.print((char)data);}fis.close();
} catch (IOException e) {e.printStackTrace();
}
  • 字符流:用于处理文本数据,以字符为单位进行读写。例如,FileReader用于从文件中读取字符数据,FileWriter用于向文件中写入字符数据。

try {FileReader fr = new FileReader("input.txt");int c;while((c = fr.read())!= - 1) {System.out.print((char)c);}fr.close();
} catch (IOException e) {e.printStackTrace();
}
  1. 缓冲流

    • 缓冲流是在字节流和字符流的基础上增加了缓冲功能,可以提高读写效率。例如,BufferedReader用于缓冲字符输入流,BufferedWriter用于缓冲字符输出流,BufferedInputStream用于缓冲字节输入流,BufferedOutputStream用于缓冲字节输出流。

try {BufferedReader br = new BufferedReader(new FileReader("input.txt"));String line;while((line = br.readLine())!= null) {System.out.println(line);}br.close();
} catch (IOException e) {e.printStackTrace();
}

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

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

相关文章

Vue3 -- 项目配置之eslint【企业级项目配置保姆级教程1】

下面是项目级完整配置1➡eslint&#xff1a;【吐血分享&#xff0c;博主踩过的坑你跳过去&#xff01;&#xff01;跳不过去&#xff1f;太过分了给博主打钱】 浏览器自动打开项目&#xff1a; 你想释放双手吗&#xff1f;你想每天早上打开电脑运行完项目自动在浏览器打开吗&a…

【SQL】E-R模型(实体-联系模型)

目录 一、介绍 1、实体集 定义和性质 属性 E-R图表示 2. 联系集 定义和性质 属性 E-R图表示 一、介绍 实体-联系数据模型&#xff08;E-R数据模型&#xff09;被开发来方便数据库的设计&#xff0c;它是通过允许定义代表数据库全局逻辑结构的企业模式&#xf…

LLM - 计算 多模态大语言模型 的参数量(Qwen2-VL、Llama-3.1) 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/143749468 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 影响 (…

基于Java Springboot成都旅游网

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

css 使用图片作为元素边框

先看原始图片 再看效果 边框的四个角灭有拉伸变形,但是图片的中部是拉伸的 代码 border-style: solid;/* 设置边框图像的来源 */border-image-source: url(/static/images/mmwz/index/bk_hd3x.png);/* 设置如何切割图像 */border-image-slice: 66;/* 设置边框的宽度 */border…

【阅读记录-章节1】Build a Large Language Model (From Scratch)

目录 1. Understanding large language models1.1 What is an LLM?补充介绍人工智能、机器学习和深度学习的关系机器学习 vs 深度学习传统机器学习 vs 深度学习&#xff08;以垃圾邮件分类为例&#xff09; 1.2 Applications of LLMs1.3 Stages of building and using LLMs1.4…

【WSL+Ubuntu】默认用户被意外变更为 root 后切回原来的默认用户

引言 在使用 Windows Subsystem for Linux (WSL) Ubuntu 时&#xff0c;在 ~ 目录下使用 ls 命令&#xff0c;发现所有文件都消失了&#xff0c;让我误以为文件被清空了。实际上是因为WSL Ubuntu的默认用户被意外地改变为了 root。那么&#xff0c;如何恢复并切回原来的默认用…

Cookie 与 Session:差异剖析与应用实战

一、引言 在 JavaWeb 开发领域&#xff0c;Cookie 和 Session 是用于跟踪用户状态和在不同页面间传递信息的重要机制。它们在实现用户登录状态保持、个性化推荐、购物车功能等方面发挥着关键作用&#xff0c;但二者在工作原理、存储位置、生命周期等方面存在明显区别。深入理解…

Java策略模式应用实战

Java策略模式应用实战 推送内容并预检 import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; import java.util.Objects; import java.util.logging.Level; import java.util.logging.Logger;// DTO class class DataDTO {private String type;…

36.矩阵格式的等差数列 C语言

第一行&#xff0c;每个数差2&#xff0c;之后是3、4、5&#xff0c;最后一行是10 仅仅是练习目的 #define _CRT_SECURE_NO_WARNINGS // 禁用在 Visual Studio 中有关不安全函数的警告 #include <stdio.h> // 引入标准输入输出库int main() {int i; // 外层循环的变量…

深入剖析:Java 中 @RequestBody 注解的正确使用

在 Spring Web 开发中&#xff0c;RequestBody 是一个常见而又强大的注解。它能够帮助我们轻松地将 HTTP 请求体中的 JSON 数据转换为 Java 对象&#xff0c;从而减少了繁琐的手工解析操作。但看似简单的注解&#xff0c;背后却隐藏着一些坑点和细节。今天&#xff0c;我们将深…

OPC UA 服务器

OPC UA&#xff08;OPC Unified Architecture&#xff09; 是一种平台无关的通信协议&#xff0c;广泛用于工业自动化领域。它由 OPC 基金会开发&#xff0c;主要设计目标是实现安全、可靠和互操作性的数据交换&#xff0c;适用于各种设备和系统之间的通信。 什么是 OPC UA 服务…

模式:每个服务一个数据库

Pattern: Database per service。 背景 如用微服务架构模式开发一个在线商店应用程序。大多数服务需要在某种数据库中持久化数据。如&#xff0c;订单服务存储订单信息&#xff0c;而客户服务存储客户信息。 问题 微服务应用程序中的数据库架构是什么&#xff1f; 驱动力…

<websocket><PLC>使用js和html实现webscoket,与PLC进行socket通讯的实例

前言 本文是为了实现从网页端通过websocket与PLC端的socket进行数据通讯。 环境配置 系统:windows 平台:visual studio code 语言:javascript、html、PLC 库:node.js 概述 本文的目的是通过网页端与PLC进行socket通讯,但web端一般并不是直接使用socket,而是websocket,…

Acme PHP - Let‘s Encrypt

Lets Encrypt是一个于2015年三季度推出的数字证书认证机构&#xff0c;旨在以自动化流程消除手动创建和安装证书的复杂流程&#xff0c;并推广使万维网服务器的加密连接无所不在&#xff0c;为安全网站提供免费的SSL/TLS证书。 使用PHP来更新证书&#xff1a; Acme PHP | Rob…

高效管理 SSH 免密码登录:多客户端与多服务器实践指南20241118

高效管理 SSH 免密码登录&#xff1a;多客户端与多服务器实践指南 引言 在日常开发中&#xff0c;安全高效地管理多个客户端与服务器之间的 SSH 连接是一个常见需求。尤其对于运维工程师和开发者&#xff0c;避免频繁输入密码并保障安全性是实现高效工作的关键。本文结合实际案…

如何实现主备租户的无缝切换 | OceanBase应用实践

对于DBA而言&#xff0c;确保数据库的高可用性、容灾等能力是其日常工作中需要持续思考和关注的重要事项。一方面&#xff0c;可以利用数据库自身所具备的功能来实现这些目标&#xff1b;若数据库本身不提供相应功能&#xff0c;DBA则需寻找其他工具来增强数据库的高可用性和容…

正在执行例行维护 请一分钟后回来

WordPress网站出现“正在执行例行维护&#xff0c;请一分钟后回来。”的情况通常是因为网站进入了维护模式。以下是一些可能导致这种情况的原因和相应的解决方案&#xff1a; 1. 更新过程中的维护模式&#xff1a; 当WordPress在更新核心文件、插件或主题时&#xff0c;会自动…

后端-Result.java工具类和SystemCode.java工具类

一.Result.java工具类 package com.hs.util; /** * 响应格式类 * 作用&#xff1a;统一服务端的响应数据格式 */ public class Result<T> { /** * 响应代码 */ private int status; /** * 响应信息 */ private String message;…

超越GPT-4o-mini | 北大开源「国产o1」大模型,{多阶段自主推理}让小模型也能“放大招“!

01、LLaVA-o1背景简介 以OpenAI o1为代表的大型语言模型展示了强大的推理能力&#xff0c;这充分的验证了语言模型推理时间缩放的有效性。然而&#xff0c;视觉对于使模型能够充分理解世界并扩展其认知能力同等重要。因此&#xff0c;开发一个融合语言和视觉的多模态模型&#…