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

Java开发从入门到精通(九):Java的面向对象OOP:成员变量、成员方法、类变量、类方法、代码块、单例设计模式

Java大数据开发和安全开发

  • (一)Java的变量和方法
    • 1.1 成员变量
    • 1.2 成员方法
    • 1.3 static关键字
      • 1.3.1 static修饰成员变量
      • 1.3.1 static修饰成员变量的应用场景
      • 1.3.1 static修饰成员方法
      • 1.3.1 static修饰成员方法的应用场景
      • 1.3.1 static的注意事项
      • 1.3.1 static的应用知识:代码块
        • 静态代码块
        • 实例代码块
      • 1.3.1 static的应用知识:单例设计模式
        • 懒汉式单例设计模式
    • 1.4 final关键字

(一)Java的变量和方法

1.1 成员变量

待补充

1.2 成员方法

待补充

1.3 static关键字

static关键字的概念:

			静态的意思,可以修饰成员变量、成员方法。

1.3.1 static修饰成员变量

成员变量按照有无static修饰,分为两种:

  • 类变量

  • 实例变量(对象的变量)
    在这里插入图片描述

  • 类变量:有static修饰,属于类,在计算机里只有一份,会被类的全部对象共享

  • 实例变量(对象的变量): 无static修饰,属于每个对象的

public class Student {// 类变量static String name;// 实例变量(对象的变量)int age;}
public class Test {public static void main(String[] args) {// 目标:掌握有无static修饰成员变量的用法,特点。// 1、类变量的用法。// 类名.类变量(推荐)Student.name ="袁华";// 对象.类变量(不推荐)Student s1 = new Student();s1.name ="马冬梅";  //会被类的全部对象共享Student s2 = new Student();s2.name="秋雅";    //会被类的全部对象共享System.out.println(s1.name);//  秋雅System.out.println(Student.name);// 秋雅//2、实例变量的用法:属于每个对象的变量// 对象.实例变量s1.age = 23;s2.age = 18;System.out.println(s1.age);//23}
}

成员变量的执行原理

在这里插入图片描述

1.3.1 static修饰成员变量的应用场景

类变量的应用场景

  • 在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住

案例导学:

  • 系统启动后,要求用户类可以记住自己创建了多少个用户对象了
public class User {// 类变量public static int number;public User(){// User.number++;// 注意:在同一个类中,访问自己类的类变量,才可以省略类名不写。number++;}
}
public class Test2 {public static void main(String[] args) {// 目标:通过案例理解类变量的应用场景、User ul = new User();User u2 = new User();User u3 = new User();User u4 = new User();System.out.println(User.number);}
}

1.3.1 static修饰成员方法

成员方法的分类

  • 类方法 :有static修饰的成员方法,属于类。(也叫静态方法)

在这里插入图片描述

  • 实例方法 :无static修饰的成员方法,属于对象

在这里插入图片描述

public class Student {double score;// 类方法public static void printHelloWorld() {System.out.println("Hello World");System.out.println("Hello World");}//实例方法(对象的方法)public void printPass(){System.out.println("成绩:" +(score >=60 ?"及格":"不及格"));}
}
public class Test {public static void main(String[] args) {// 目标:掌握有无static修饰方法的用法。// 1、类方法的用法// 类名.类方法(推荐)Student.printHelloWorld();// 对象.类方法(不推荐)Student s= new Student();s.printHelloWorld();// 2、实例方法的用法// 对象.实例方法s.printPass();// Student.printPass();// 报错  不能使用类名访问实例方法}
}

成员方法的执行原理
在这里插入图片描述

搞懂main方法
main方法使用static修饰也就说明main方法是类方法,Test.class在运行时会直接执行Test.main方法,所以main可以直接运行不需要别人调用,String[] args 代表main方法可以传参的,怎么传呢?看下面

在这里插入图片描述
这里我们用txt写了一段循环的代码 使用java编译来运行
在这里插入图片描述
java在编译执行的时候可以按照参数的类型直接传参,这是就是main方法的传参
在这里插入图片描述

1.3.1 static修饰成员方法的应用场景

  • 类方法最常见的应用场景是做工具类

工具类是什么?

  • 工具类中的方法都是一些类方法,每个方法都是用来完成一个功能的,工具类是给开发人员共同使用的。

使用类方法来设计工具类有啥好处?

  • 提高了代码复用;调用方便,提高了开发效率
    在这里插入图片描述

类方法应用场景案例

  • 某系统登录页面需要四位数的验证码 注册页面需要六位数的验证码

在这里插入图片描述
登录页面写一次生成验证码的代码 注册页面再写一次 代码重复率很高
在这里插入图片描述
所以使用工具类来简化代码

import java.util.Random;public class GongJuLei {public static String CreateCode(int n){String code ="";String data = "abcdefghijklmnopqrstuVwXyZABCDEFGHIJKLMNOPORSTUVWXYZ0123456789";Random r =new Random();// 2、开始定义一个循环产生每位随机字符for(int i=0;i<n;i++){// 3、随机一个字符范围内的索引。int index = r.nextInt(data.length());// 4、根据索引去全部字符中提取该字符code += data.charAt(index);//code =code +字符}return code;}
}
public class Reg {public static void main(String[] args) {//注册页面GongJuLei.CreateCode(6);}
}
public class Reg {public static void main(String[] args) {//注册页面GongJuLei.CreateCode(6);}
}

在这里插入图片描述

为什么工具类中的方法要用类方法,而不用实例方法?

  • 实例方法需要创建对象来调用,此时对象只是为了调用方法,对象占内存,这样会浪费内存。
  • 类方法,直接用类名调用即可,调用方便,也能节省内存。

多学一招:

  • 工具类没有创建对象的需求,建议将工具类的构造器进行私有
  • 使用工具类无需再创建对象,直接用类名调用,为了不让别人创建对象可以私有化构造器,这样在实例化对象时调用不了无参构造器就会失败
    private GongJuLei(){}

1.3.1 static的注意事项

  • 类方法中可以直接访问类的成员,不可以直接访问实例成员
  • 实例方法中既可以直接访问类成员,也可以直接访问实例成员
  • 实例方法中可以出现this关键字,类方法中不可以出现this关键字的
  • 实例方法中可以直接访问当前类的私有成员
public class Student {static String schoolName;//类变量double score;//实例变量//1、类方法中可以直接访问类的成员,不可以直接访问实例成员public static void printHelloWorld() {// 注意:同一个类中,访问类成员,可以省略类名不写、Student.schoolName = "黑马";Student.printHelloWorld2();schoolName = "黑马";//可以省略类名不写、printHelloWorld2();//可以省略类名不写、//System.out.println(score);// 报错的 不可以直接访问实例成员//printPass();//报错的 不可以直接访问实例方法//System.out.println(this);报错的 不可以直接访问this}//类方法public static void printHelloWorld2() {}//2、实例方法中既可以直接访问类成员,也可以直接访问实例成员// 实例方法public void printPass(){schoolName ="黑马2";//访问类成员printHelloWorld2();//访问类方法System.out.println(this);  //可以直接访问this}
}

1.3.1 static的应用知识:代码块

代码块概述

  • 代码块是类的5大成分之一(成员变量、构造器、方法、代码块、内部类)

代码块分为两种:

  • 静态代码块

     格式:static{}特点:类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次作用:完成类的初始化,例如:对类变量的初始化赋值。
    
  • 实例代码块

     格式:{}特点:每次创建对象时,执行实例代码块,并在构造器前执行。作用:和构造器一样,都是用来完成对象的初始化的,例如:对实例变量进行初始化赋值
    
静态代码块
public class Student {static int number =80;static String schoolName;// 静态代码块static {System.out.println("静态代码块执行了~~");schoolName =“黑马";// 初始化赋值}// 实例代码块{System.out.println("实例代码块执行了~~");}public student(){System.out.println("无参数构造器执行了~~")}public student(String name){System.out.println("有参数构造器执行了~~");}
}
public class Test {public static void main(string[] args){// 目标:认识两种代码块,了解他们的特点和基本作用。			System.out.println(student.number); //类加载时自动执行System.out.println(Student.number);System.out.println(Student.number);System.out.println(Student.schoolName);//System.out.println("---------------")Student sl =new Student();Student s2 =new Student(name:"张三");
实例代码块

每次创建对象时,执行实例代码块,并在构造器前执行 构造器也是创建对象时执行

public class Student {static int number =80;static String schoolName;// 静态代码块// 实例代码块{System.out.println("实例代码块执行了~~");System.out.println("有人创建了对象:" + this);}public student(){System.out.println("无参数构造器执行了~~")}public student(String name){System.out.println("有参数构造器执行了~~");}
}
public class Test {public static void main(string[] args){// 目标:认识两种代码块,了解他们的特点和基本作用。			System.out.println("---------------")Student sl =new Student();   Student s2 =new Student(name:"张三");
实例代码块执行了~~
无参数构造器执行了~~
实例代码块执行了~~
有参数构造器执行了~~

1.3.1 static的应用知识:单例设计模式

什么是设计模式(Design pattern)

  • 一个问题通常有n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式

关于设计模式的学习,主要学什么?

在这里插入图片描述
单例设计模式

  • 确保一个类只有一个对象。

写法

  • 把类的构造器私有。
  • 定义一个类变量记住类的一个对象。
  • 定义一个类方法,返回对象。
public class A{// 2、定义一个类变量记住类的一个对象private static Aa= new A();//1、必须私有类的构造器private A(){}//3、定义一个类方法返回类的对象public static A getobject(){return a;}
}
public class Test1{public static void main(String[] args){// 目标:掌握单例设计模式的写法。A a1 = A.getobject();A a2 = A.getobject();System.out.println(a1);System.out.println(a2);}
}
com.itheima.d6_singleInstance.A@776ec8df
com.itheima.d6_singleInstance.A@776ec8df

单例模式的应用场景和好处?

  • 任务管理器对象、获取运行时对象。
  • 在这些业务场景下,使用单例模式,可以避免浪费内存。
  • 饿汉式单例:拿对象时,对象早就创建好了,
  • 懒汉式单例:拿对象时,才开始创建对象,
懒汉式单例设计模式
  • 拿对象时,才开始创建对象
public class B{// 2、定义一个类变量,用于存储这个类的一个对象。private static B b;// 1、把类的构造器私有private B(){}//13、定义一个类方法,这个方法要保证第一次调用时才创建一个对象,后面调用时都会用这同一个对象返回。public static B getInstance(){if(b == null){b = new B();}return b;}
}
public class Test2 {public static void main(string[] args){B b1=B.getInstance();// 第一次拿对象B b2 =B.getInstance();System.out.println(b1 == b2);}
}

单例模式是用饿汉模式还是懒汉模式呢?

  • 如果写的单例模式经常用 就使用饿汉模式
  • 如果写的单例模式不常用就用懒汉模式 节省内存

1.4 final关键字

final 关键字是最终的意思,可以修饰(类、方法、变量)

  • 修饰类:该类被称为最终类,特点是不能被继承了
  • 修饰方法:该方法被称为最终方法,特点是不能被重写了
  • 修饰变量:该变量只能被赋值一次。
// 1、final修饰类,类不能被继承了
final class A{}
//class B extends A {}
// 2、final修饰方法,方法不能被重写了
class C{public final void test()
}
class D extends C{@0verridepublic void test(){  //报错 }
}
public class Test{/*** 常量 : public static final 修饰的成员变量,建议名称全部大写,多个单词下划线连接*/public static final String SCHOOL_NAME ="黑马";private final String name ="猪八戒";// 这种用法没有意义,知道就行public static void main(string[] args){// 目标:认识final的作用。// 3、final可以修饰变量总规则:有且仅能赋值一次/*变量:1.局部变量2.成员变量:1、静态成员变量2、实例成员变量*/final int a;a= 12;//a=13;// 第二次赋值,出错了final double r= 3.14;//r=0.1;// 第二次赋值,出错了// schoolName =“白马";// 第二次赋值,出错了}public static void buy(final double z){//z= 0.1;// 第二次赋值,出错了}
}

final修饰变量的注意

  • final修饰基本类型的变量,变量存储的数据不能被改变
  • final修饰引用类型的变量,变量存储的地址不能被改变,但地址所指向对象的内容是可以被改变的。
final int[]arr ={11,22,33};
// arr = null;// 第二次赋值,出错了
arr[1]= 222;

常量
使用了 static final修饰的成员变量就被称为常量,
作用:通常用于记录系统的配置信息。
在这里插入图片描述

使用常量记录系统配置信息的优势、执行原理
代码可读性更好,可维护性也更好。
程序编译后,常量会被“宏替换”: 出现常量的地方全部会被替换成其记住的字面量这样可以保证使用常量和直接用字面量的性能是一样的。

public class Test2 {public static final String SCHOOL_NAME ='"黑马程序员黄埔班"public static void main(string[l args){// 目标:认识常量。System.out.println(SCHOOL_NAME);System.out.println(SCHOOL_NAME);System.out.println(SCHOOL_NAME);System.out.println(SCHOOL_NAME);System.out.println(SCHOOL NAME);System.out.println(SCHOOL NAME);}
}

相关文章:

Java开发从入门到精通(九):Java的面向对象OOP:成员变量、成员方法、类变量、类方法、代码块、单例设计模式

Java大数据开发和安全开发 &#xff08;一)Java的变量和方法1.1 成员变量1.2 成员方法1.3 static关键字1.3.1 static修饰成员变量1.3.1 static修饰成员变量的应用场景1.3.1 static修饰成员方法1.3.1 static修饰成员方法的应用场景1.3.1 static的注意事项1.3.1 static的应用知识…...

通过 Socket 手动实现 HTTP 协议

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…...

探索数据结构:双向链表的灵活优势

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 前言 前面我们学习了单链表&#xff0c;它解决了顺序表中插入删除需…...

记录一次服务器内存使用率过高达到90%告警问题排查。

目录 一、前言二、问题排查处理三、 结尾 &#x1f469;&#x1f3fd;‍&#x1f4bb;个人主页&#xff1a;阿木木AEcru &#x1f525; 系列专栏&#xff1a;Docker容器化部署系列 &#x1f4b9;每一次技术突破&#xff0c;都是对自我能力的挑战和超越。 一、前言 一大早就有一…...

基于react native的自定义轮播图

基于react native的自定义轮播图 效果示例图示例代码 效果示例图 示例代码 import React, {useEffect, useRef, useState} from react; import {Animated,PanResponder,StyleSheet,Text,View,Dimensions, } from react-native; import {pxToPd} from ../../common/js/device;c…...

Jetson入坑记实

关于虚拟环境python与系统自带python目录下dist-packages与site-packages dist-packages&#xff1a;系统自带的python site-packages&#xff1a;自己安装的python 详细&#xff1a;dist-packages与site-packages_dist-packages和site-packages-CSDN博客 rtsp获取视频流(没…...

算法系列--递归

一.如何理解递归 递归对于初学者来说是一个非常抽象的概念,笔者在第一次学习时也是迷迷糊糊的(二叉树遍历),递归的代码看起来非常的简洁,优美,但是如何想出来递归的思路或者为什么能用递归这是初学者很难分析出来的 笔者在学习的过程中通过刷题,也总结出自己的一些经验,总结来…...

【JS】替换文本为emjio表情

最终效果展示 T1 T2 T3 T4 需求 把评论你好帅啊啊啊[开心][开心]&#xff0c;[开心] 替换为图片 思路 正则match提取[开心]到一个数组数组去重创建img标签img标签转文本. 。例&#xff1a;&#xff08;el.outerHTML&#xff09;&#xff0c;将el元素转文本字符串replaceAll…...

Solr完结版

Solr是基于Apache Lucene构建的用于搜索和分析的开源解决方案。提供可拓展索引、搜索功能、高亮显示和文字解析功能。本质是一个java web项目&#xff0c;内嵌Jetty服务器&#xff0c;安装方便。 请求Solr中的控制器&#xff0c;处理完数据后把结果相应给客户端 正向索引&#…...

外包干了5天,技术退步明显。。。。

说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入广州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…...

Cronos zkEVM 基于 Covalent Network(CQT)数据可用性 API,推动其 Layer2 DeFi 生态更好地发展

在一项旨在显著改善 DeFi 生态的战略举措中&#xff0c;Cronos 与 Covalent Network&#xff08;CQT&#xff09;携手合作&#xff0c;以期待 Cronos zkEVM 的推出。这一整合&#xff0c;预计将进一步降低以太坊生态系统的交易成本、提升交易速度&#xff0c;并带来更好的交易体…...

基于SpringBoot的高校办公室行政事务管理系统

采用技术 基于SpringBoot的高校办公室行政事务管理系统的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 功能清单 教师信息管理 办公室管理 办公物资管…...

Linux系统及操作 (04)

Linux系统及操作 (03) RPM 软件包 网络下载对应软件包光盘镜像文件&#xff0c;具备软件包 Windows 系统软件包的管理 可以指定安装位置安装是集中安装到一个目录Linux 系统 与 Windows 系统相反。 常见的软件包&#xff08;生态&#xff09;类型 电脑入侵99%都是通过软件…...

粒子群算法 - 目标函数最优解计算

粒子群算法概念 粒子群算法 (particle swarm optimization&#xff0c;PSO) 由 Kennedy 和 Eberhart 在 1995 年提出&#xff0c;该算法模拟鸟群觅食的方法进行寻找最优解。基本思想&#xff1a;人们发现&#xff0c;鸟群觅食的方向由两个因素决定。第一个是自己当初飞过离食物…...

关于MySQL数据库的学习3

目录 前言: 1.DQL&#xff08;数据查询语言): 1..1基本查询&#xff1a; 1.2条件查询&#xff1a; 1.3排序查询&#xff1a; 1.3.1使用ORDER BY子句对查询结果进行排序。 1.3.2可以按一个或多个列进行排序&#xff0c;并指定排序方向&#xff08;升序ASC或降序DESC&#…...

笔试题——得物春招实习

开幕式排练 题目描述 导演在组织进行大运会开幕式的排练&#xff0c;其中一个环节是需要参演人员围成一个环形。演出人员站成了一圈&#xff0c;出于美观度的考虑&#xff0c;导演不希望某一个演员身边的其他人比他低太多或者高太多。 现在给出n个参演人员的身高&#xff0c;问…...

动手做简易版俄罗斯方块

导读&#xff1a;让我们了解如何处理形状的旋转、行的消除以及游戏结束条件等控制因素。 目录 准备工作 游戏设计概述 构建游戏窗口 游戏方块设计 游戏板面设计 游戏控制与逻辑 行消除和计分 判断游戏结束 界面美化和增强体验 看看游戏效果 准备工作 在开始编码之前…...

【极简无废话】open3d可视化torch、numpy点云

建议直接看文档&#xff0c;很多都代码老了&#xff0c;注意把代码版本调整到你使用的open3d的版本&#xff1a; https://www.open3d.org/docs/release/tutorial/visualization/visualization.html 请注意open3d应该已经不支持centos了&#xff01; 从其他格式转换成open3d…...

C语言经典算法-6

文章目录 其他经典例题跳转链接31.数字拆解32.得分排行33.选择、插入、气泡排序34.Shell 排序法 - 改良的插入排序35.Shaker 排序法 - 改良的气泡排序 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. 三色棋 5. 老鼠走迷官&#xff08;一&…...

【计算机考研】杭电 vs 浙工大 怎么选?

想求稳上岸的话&#xff0c;其他几所学校也可以考虑&#xff0c;以留在本地工作的角度考虑&#xff0c;这几所学校都能满足你的需求。 如果之后想谋求一份好工作&#xff0c;肯定优先杭电是比较稳的&#xff0c;当然复习的时候也得加把劲。 这个也可以酌情考虑&#xff0c;报…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...