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

Java面向对象(1)

static静态变量

在这里插入图片描述

public class Student {static String name;private double score;public Student(){};public Student(double score) {this.score = score;}public double getScore() {return score;}public void setScore(double score) {this.score = score;}
}
public class test {public static void main(String[] args) {Student.name="刘";Student s1=new Student();s1.name="马";Student s2=new Student();s2.name="秋";System.out.println(Student.name);}
}//秋

static只有一个变量,所以修改别的类中的变量,所以的name都会变化。

应用场景

比如系统的中统计用户的个数,在每次用户类中的构造函数中++。

public class User {public static int num;//初始为0public User(){User.num+=1;}
}
public class test {public static void main(String[] args) {User u1=new User();User u2=new User();User u3=new User();User u4=new User();User u5=new User();User u6=new User();System.out.println(u1.num);}
}
//输出 6

在这里插入图片描述
在这里插入图片描述

public class LoginDemo {public static void main(String[] args) {String code="";String data="qwertyuiopasdfghjklzxcvbnm";Random r=new Random();for(int i=0;i<4;++i){int t=r.nextInt(data.length());code+=data.charAt(t);}System.out.println(code);}
}
public class RegisterDemo {public static void main(String[] args) {String code="";String data="qwertyuiopasdfghjklzxcvbnm";Random r=new Random();for(int i=0;i<4;++i){int t=r.nextInt(data.length());code+=data.charAt(t);}System.out.println(code);}
}

上述两个代码可以改成如下:

public class MyUtil {public static String createCode(int n) {String code="";String data="qwertyuiopasdfghjklzxcvbnm";Random r=new Random();for(int i=0;i<n;++i){int t=r.nextInt(data.length());code+=data.charAt(t);}return code;}
}
public class LoginDemo {public static void main(String[] args) {System.out.println(MyUtil.createCode(4));}
}
public class RegisterDemo {public static void main(String[] args) {System.out.println(MyUtil.createCode(5));}
}

这样就会简洁很多。
在MyUtil中加入private MyUtil(){};后,这样可以防止别的代码中创建MyUtil类。

在这里插入图片描述

静态代码块

public class Student {static int num;static {System.out.println("静态代码块执行了");}
}
public class Test {public static void main(String[] args) {System.out.println(Student.num);System.out.println(Student.num);}
}
//输出
//静态代码块执行了
//0
//0

静态代码块只有在创建的第一次会执行。一般用来对类变量进行初始化赋值。

实例代码块

在这里插入图片描述

public class Student {public Student(){System.out.println("无参构造函数执行了");}public Student(String name){System.out.println("有参构造函数执行了");}{System.out.println("实例代码块执行了");}
}
public class Test {public static void main(String[] args) {Student stu=new Student();}
}
//输出
实例代码块执行了
无参构造函数执行了

单例模式

在这里插入图片描述
饿汉式单例
在还没有创建对象的时候就自己创建了

public class A {private static A a=new A();private A(){}public static A getObject(){return a;}
}
public class Test {public static void main(String[] args) {A a1=A.getObject();A a2=A.getObject();System.out.println(a1);System.out.println(a2);}
}
//输出
com.peng.test.single.A@4eec7777
com.peng.test.single.A@4eec7777

在这里插入图片描述
懒汉式单例
只有创建对象的时候才会创建,并且只能有一个对象

//懒汉式单例
public class B {private static B b;private B(){}public static B getInstance(){if(b==null){b = new B();}return b;}
}
public class Test {public static void main(String[] args) {B b1=B.getInstance();B b2=B.getInstance();System.out.println(b1);System.out.println(b2);}
}
//输出
com.peng.test.single.B@4eec7777
com.peng.test.single.B@4eec7777

继承

在这里插入图片描述
继承不能继承多个,但是可以多层。
任何类都默认继承Object类,
在这里插入图片描述

public class A {public int i;public void printi(){System.out.println("公共的可以继承");}private int j;private void printj(){System.out.println("私有的不可以继承");}}
public class B extends A {public void printb(){i=0;System.out.println(i);printi();}
}

继承的应用

public class people {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}
}
public class teacher {private int salary;public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}
}
public class student {private String subject;public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}
}
public class Test {public static void main(String[] args) {teacher t=new teacher();t.setName("刘");t.setSalary(100);System.out.println(t.getName());System.out.println(t.getSalary());}}
//输出100

修饰符

在这里插入图片描述

方法重写

在这里插入图片描述
在这里插入图片描述
重写的前面要加上@Override,便于理解。
继承变量中会就近原则。如果非要访问父类的变量,就用super来访问。

public class people {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public void print_people(){System.out.println("1111");}
}
public class teacher extends people{private int salary;public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}@Overridepublic void print_people(){System.out.println("66666");}
}
public class Test {public static void main(String[] args) {teacher t=new teacher();t.print_people();}
}

在这里插入图片描述

相关文章:

Java面向对象(1)

static静态变量 public class Student {static String name;private double score;public Student(){};public Student(double score) {this.score score;}public double getScore() {return score;}public void setScore(double score) {this.score score;} }public class t…...

【计算机毕业设计】基于SpringBoot+Vue金融产品销售系统的设计与实现

博主主页&#xff1a;一季春秋博主简介&#xff1a;专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发&#xff0c;远程调试部署、代码讲解、文档指导、ppt制作等技术指导。主要内容&#xff1a;毕业设计(Java项目、小程序、安卓等)、简历模板、学习资料、…...

【面试题精讲】Mysql如何实现乐观锁

❝ 有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top ❞ 首发博客地址 文章更新计划 系列文章地址 在 MySQL 中&#xff0c;可以通过使用乐观锁来实现并发控制&#xff0c;以避免数据冲突和并发更新问…...

从零开始搭建java web springboot Eclipse MyBatis jsp mysql开发环境

文章目录 1 第一步软件安装1.1 下载并安装Eclipse1.2 下载并安装Java1.3 下载并安装Apache Maven1.4 下载并安装MySQL 2 创建所需要的表和数据3 创建Maven 工程、修改jdk4 通过pom.xml获取所需要的jar包5 安装Eclipse的MyBatis插件6 创建文件夹以及jsp文件7 创建下面各种java类…...

【VsCode】整理代码

在VsCode中&#xff0c;你可以使用插件"Beautify"来格式化你的HTML代码&#xff0c;使其更加整齐清晰。而对于JSON代码&#xff0c;你可以使用"vscode-json"插件来格式化为易读的树状结构&#xff0c;方便查看和编辑。这些插件可以帮助你更加高效地整理HTM…...

盘点总结汇总植物病虫害、人体疾病识别相关的项目实践

在前面的很多项目中做了许多有关于植物病虫害比如&#xff1a;苹果病虫害、番茄病虫害、小麦病虫害、辣椒病虫害、白菜病虫害、木薯病虫害、葡萄病虫害、柑橘病虫害等等&#xff0c;还有一些是有关于人体疾病识别相关的&#xff0c;比如&#xff1a;病理细胞识别、癌症识别、皮…...

【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习

【测试开发】用例篇&#xff08;2&#xff09; 文章目录 【测试开发】用例篇&#xff08;2&#xff09;1. 正交表法1.1 什么是正交表1.2 两个重要概念1.3 如何通过正交表设计测试用例1.3.1 充分理解需求1.3.2 确定因素、确定水平1.3.3 allpairs画正交表1.3.4 补充正交表1.3.5 将…...

【ES】笔记-数值扩展

数值扩展 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>数值扩展</title> </head> &l…...

浅谈Rust内存管理

Rust因在内存管理上的独到之处&#xff0c;近年来受到了不少开发者的青睐。Rust内存管理的核心功能就是所有权。不同的语言采取了不同的内存管理方式&#xff0c;主要分为开发者手动管理或者编译器辅助管理&#xff0c;以及垃圾回收机制等。Rust的所有权机制&#xff0c;有别于…...

Vue路由跳转至页面后多次渲染

在 Vue 中&#xff0c;当你跳转到一个新的路由或者重新加载当前路由时&#xff0c;由于 Vue Router 或其他路由管理工具的机制&#xff0c;会导致该页面组件重新渲染多次的情况发生。这可能是因为以下原因&#xff1a; 组件复用&#xff1a;Vue Router 默认情况下会尝试复用已经…...

CDH大数据平台集群部署

文章目录 1. 资源准备2. 部署 Mariadb 数据库3. 安装CM服务4. 安装数据节点5. 登录CM系统 1. 资源准备 准备好CDH安装包资源&#xff0c;官方网站下载需要账号&#xff0c;如果没有账号可以去网上到处搜搜。主要涉及到的资源有&#xff1a; cloudera-manager-servercloudera-m…...

基于springboot+vue的校园资产管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...

@RequestMapping 注解使用技巧

一、RequestMapping 基础用法 用于将任意HTTP 请求映射到控制器方法上。 RequestMapping表示共享映射&#xff0c;如果没有指定请求方式&#xff0c;将接收GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECT所有的HTTP请求方式。GetMapping、PostMapping、PutMapp…...

AtCoder 265G 线段树

题意 传送门 AtCoder 265G 012 Inversion 题解 直接维护逆序对数量比较困难&#xff0c;考虑到元素值域很小&#xff0c;直接将不同数值对解耦进行维护。具体而言&#xff0c;线段树维护区间 0 , 1 , 2 0,1,2 0,1,2 的数量&#xff0c;以及满足 i < j i<j i<j 时…...

通俗易懂了解大语言模型LLM发展历程

1.大语言模型研究路程 NLP的发展阶段大致可以分为以下几个阶段&#xff1a; 词向量词嵌入embedding句向量和全文向量理解上下文超大模型与模型统一 1.1词向量 将自然语言的词使用向量表示&#xff0c;一般构造词语字典&#xff0c;然后使用one-hot表示。   例如2个单词&…...

Vim - 快速插入C语言函数注释模板

背景 C语言使用vim编写时&#xff0c;需要快速对函数进行说明头插入&#xff1b; 代码 function! InsertCFunctionHeader()" 获取当前行内容let line getline(.)" 匹配 C 函数定义let matched matchlist(line, ^\s*\w\ \\(\w\\)(\(.*\)))" 如果当前行不是函…...

Leetcode171. Excel 表列序号

给你一个字符串 columnTitle &#xff0c;表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。 例如&#xff1a; A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ... 题解&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱…...

自主设计,模拟实现 RabbitMQ - 实现 拒绝/否定 应答机制

目录 一、拒绝/否定 应答机制 1.1、需求分析 什么是 拒绝/否定 应答呢?...

在github上设置不同分支,方便回滚

在github上设置不同分支&#xff0c;方便回滚 步骤可能出现的问题couldnt find remote ref gpuVersion1. 确保您处于正确的分支2. 添加并提交更改&#xff08;如果还未进行&#xff09;3. 推送本地分支到远程仓库4. 验证操作 步骤 之前在github上上传了一个项目代码&#xff0c…...

【Elsevier旗下】JCR2/3区,最快25天录用!计算机与娱乐、教育、游戏、新媒体均可

期刊简介&#xff1a; 出版社&#xff1a;Elsevier 影响因子&#xff08;2022&#xff09;&#xff1a;2.5-3.0 期刊分区&#xff1a;JCR2/3区&#xff0c;中科院4区 检索数据库&#xff1a;SCIE 在检 数据库检索年份&#xff1a;2016年 预警情况&#xff1a;无中科院预警…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...