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;如何恢复并切回原来的默认用…

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

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

Acme PHP - Let‘s Encrypt

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

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

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

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

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

Unity类银河战士恶魔城学习总结(P126 Item ToolTip物品提示)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了把鼠标放到物品上面就会显示物品属性 UI_ItemTooltip.cs 功能实现&#xff1a;该脚本的核心功能是展示和隐藏物品的工具提示…

11.13机器学习_线性回归

十 集成学习方法之随机森林 机器学习中有一种大类叫集成学习&#xff08;Ensemble Learning&#xff09;&#xff0c;集成学习的基本思想就是将多个分类器组合&#xff0c;从而实现一个预测效果更好的集成分类器。集成算法可以说从一方面验证了中国的一句老话&#xff1a;三个…

【机器学习】数学知识:欧式距离(Euclidean Distance)和曼哈顿距离(Manhattan Distance)

欧式距离和曼哈顿距离是两种常用的距离度量方法&#xff0c;用于衡量两点之间的相似性或差异性。它们在几何分析、数据挖掘、机器学习等领域有广泛应用。 1. 欧式距离 概念 欧式距离&#xff08;Euclidean Distance&#xff09;是最常见的直线距离度量方法&#xff0c;源于欧…

hydra基础知识

hydra基础知识 1、yaml的使用 1.1 基础介绍 主要是用来写配置文件 优势: 层级式可以写注释安装: pip install pyyaml1.2 语法 2、omegaconf 2.1 基础介绍 为什么需要omegaconf? omegaconf主要是对python原生的字典,列表类型的增强,通过omegaconf能够更好的处理yaml…

递归(3)----力扣40组合数2,力扣473火柴拼正方形

给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 示例 1: 输入: candidates [10,1,2,7,6,1…

RPC-健康检测机制

什么是健康检测&#xff1f; 在真实环境中服务提供方是以一个集群的方式提供服务&#xff0c;这对于服务调用方来说&#xff0c;就是一个接口会有多个服务提供方同时提供服务&#xff0c;调用方在每次发起请求的时候都可以拿到一个可用的连接。 健康检测&#xff0c;能帮助从连…

Android WMS概览

WMS&#xff08;WindowManagerService&#xff09;是 Android 系统的核心服务&#xff0c;负责管理应用和系统的窗口&#xff0c;包括窗口的创建、销毁、布局、层级管理、输入事件分发以及动画显示等。它通过协调 InputManager 和 SurfaceFlinger 实现触摸事件处理和窗口渲染&a…

4.STM32之通信接口《精讲》之USART通信---实验串口发送程序

本节将进行实战&#xff0c;基础了解请查看第1&#xff0c;2&#xff0c;3节&#xff08;Whappy&#xff09; 开始背&#xff01;&#xff01; USART ---》全双工 异步/同步 点对点 C语言基础printf用法&#xff0c;这节将用到printf的重定向&#xff0c;来打印到串口助手上…

Kotlin return与return@forEachIndexed

Kotlin return与returnforEachIndexed fun main() {val data arrayOf(0, 1, 2, 3, 4)println("a")data.forEachIndexed { index, v ->if (v 2) {//类似while循环中的continue//跳过&#xff0c;继续下一个forEachIndexed迭代returnforEachIndexed}println("…