Java基础之常用类

Java基础之常用类

  • 一、包装类
    • 1.1、Java基本数据类型及其对应的包装类
    • 1.2、包装类的自动装箱、自动拆箱机制
    • 1.3、包装类的优点
  • 二、String类
  • 三、StringBuffer类和StringBuilder类
    • 3.1、主要区别:
    • 3.2、StringBuffer/StringBuilder用法(两者用法一致)
  • 四、日期类
    • 4.1、Date类
    • 4.2、SimpleDateFormate和DateFormate类
    • 4.3、Calender类日期类
  • 五、JDK8日期类
    • 5.1、LocalDate
    • 5.2、LocalTime
    • 5.3、LocalDateTime
    • 5.4、ZoneDateTime
  • 六、Math类和Random类
    • 6.1、Math类
    • 6.2、Random类
  • 七、枚举类
  • 八、System类

一、包装类

Java包装类(Wrapper Classes)是一组用于将基本数据类型转换为对象的类。均位于java.lang包内

1.1、Java基本数据类型及其对应的包装类

基本数据类型包装类
整数类型byteByte
shortShort
intInteger
longLong
浮点类型floatFloat
doubleDouble
字符类型charCharacter
布尔类型booleanBoolean

1.2、包装类的自动装箱、自动拆箱机制

  • 创建一个包装类
Integer num = new Integer(0);    //创建一个数值为0的Integer对象
  • 基本类型数据和包装类对象互换
Integer num1= new Integer(8);//基本数据类型-->包装类
int num2=num1.intValue();//包装类转换成基本数据类型
System.out.println(num1+" "+num2);

//1、包装类中的自动装箱拆箱机制
Integer  num1 = 1;		//自动装箱
int num2 = num1;		//自动拆箱
System.out.println(num1 +"	"+ num2);

1.3、包装类的优点

  • 某些方法参数必须为对象,包装类使数据类型转换成对象
  • 获得类型的最大值:Integer.MAX_VALUE
  • 最小值Integer.MIN_VALUE
  • 将一个类型转为另一个类型integer.doubleValue()
  • 将字符串转化为数字Integer.parseInt(“100”)
  • 将数字转化为字符串Integer.toString(100)

二、String类

String 是 Java 中的一个类,用于表示字符串。在 Java 中,字符串是不可变的,这意味着一旦创建了一个字符串对象,就不能再修改它的内容。String 类位于 java.lang 包中,因此在大多数情况下不需要显式导入。

import java.util.Arrays;
import java.util.StringTokenizer;

/**
 * @BelongsProject: Test
 * @BelongsPackage: FaceObject
 * @Author: Jorya
 * @CreateTime: 2023-11-21  22:26
 * @Description: TODO
 * @Version: 1.0
 */
public class TestString {

    public static void main (String[] args){
        //①字符串的创建
        // 使用字面值创建字符串
        String str1 = "Hello, World!";
        String str2 = "Hello, World!";//这两个的地址是一样的,并没有重新生成一个字符串
        System.out.println(str1==str2);//true
        // 使用构造函数创建字符串
        String str3 = new String("Hello, World!");
        String str4 = new String("Hello, World!");
        System.out.println(str3==str4);//判断是否全部一样,因为是不同对象。False
        System.out.println(str3.equals(str4));//equals是判断内容是否相等:true
        System.out.println(str3.equalsIgnoreCase(str4));// 忽略大小写比较
        System.out.println(str3.compareTo(str4));//判断字符串是否相等,区分大小写

        //②字符串的链接
        // 使用加号进行字符串连接
        String fullName = str1 + " " + str2;
        // 使用 concat 方法
        String fullNameConcat = str1.concat(" ").concat(str2);
        System.out.println(fullName);

        System.out.println(str1.length());//获取字符串长度
        System.out.println(str1.isEmpty());//判断字符串是否为空
        System.out.println(str1.endsWith("!"));//判断字符串是否以!结尾
        System.out.println(str1.startsWith("H"));//判断字符串是否以H开始
        System.out.println(str1.toUpperCase());//全部转换为大写
        System.out.println(str1.toLowerCase());//全部转换为小写
        System.out.println(str1.charAt(2));//获得字符串的第3个字符l;java的下标是从0开始的
        System.out.println(str1.toCharArray());//字符串转数组
        System.out.println(str1.indexOf("l"));//查找字符串第一次出现的位置
        System.out.println(str1.indexOf("l",2));//从指定位置查找字符串第一次出现的位置
        System.out.println(str1.lastIndexOf("o"));//从后往前查找字符串第一次出现的位置
        System.out.println(str1.substring(2));//从指定位置截取字符串
        System.out.println(str1.substring(2,5));//截取中间某处的字符串
        System.out.println(str1.substring(7)); // 从索引 7 开始截取到字符串末尾
        System.out.println(str1.contains("World")); //检查字符串包括
        System.out.println(str1.replace("World", "Java"));  //字符串替换
        
        //字符串分割
        String[] split = str1.split(" ");//按指定字符串分割字符串
        System.out.println(Arrays.toString(split));

        //去掉首尾空格
        String str5 = "   Trim Me   ";
        String trimmedStr = str5.trim();
        
        //字符串格式化
        String name = "John";
        int age = 25;
        String formattedString = String.format("Name: %s, Age: %d", name, age);
    }
}

三、StringBuffer类和StringBuilder类

StringBuffer和StringBuilder类用法几乎一模一样,都为抽象类、是AbstractStringBuilder的子类

3.1、主要区别:

StringBufferStringBuilder
线程安全线程不安全
效率较慢效率快、建议使用
方法同步、适用于多线程不提供同步、适用于单线程
//比较String、StringBuilder、StringBuffer的运行时间
public class StringBufferTest {
	public static void main(String[] args) {
		long startTime, endTime;

		// 使用 String 拼接
		String s1 = "";
		startTime = System.currentTimeMillis();
		for (int i = 0; i < 100000; i++) {
			s1 = s1.concat("拼接");
		}
		endTime = System.currentTimeMillis();
		System.out.println("String 用时: " + (endTime - startTime) + "ms,长度:" + s1.length());

		// 使用 StringBuilder 拼接
		StringBuilder s2 = new StringBuilder();
		startTime = System.currentTimeMillis();
		for (int i = 0; i < 1000000; i++) {
			s2.append("拼接");
		}
		endTime = System.currentTimeMillis();
		System.out.println("StringBuilder 用时: " + (endTime - startTime) + "ms,长度:" + s2.length());

		// 使用 StringBuffer 拼接
		StringBuffer s3 = new StringBuffer();
		startTime = System.currentTimeMillis();
		for (int i = 0; i < 1000000; i++) {
			s3.append("拼接");
		}
		endTime = System.currentTimeMillis();
		System.out.println("StringBuffer 用时: " + (endTime - startTime) + "ms,长度:" + s3.length());
	}
}

在这里插入图片描述

3.2、StringBuffer/StringBuilder用法(两者用法一致)

// 创建一个空的 StringBuffer
StringBuffer buffer = new StringBuffer();
// 添加字符串
buffer.append("Hello");
// 在特定位置插入字符串
buffer.insert(5, ", World!");
// 替换字符串
buffer.replace(0, 5, "Hi");
// 删除字符串
buffer.delete(3, 6);
// 反转字符串
buffer.reverse();
// 获取字符串长度
int length = buffer.length();
// 转换为字符串
String result = buffer.toString();

四、日期类

4.1、Date类

在 Java 中,Date 类用于表示日期和时间。请注意,Date类在 Java 8 之后已经过时,更推荐使用 java.time 包中的新日期和时间 API(java.time 包中的类,如 LocalDateLocalTimeLocalDateTime

import java.util.Date;
//日期类
public class TestDate {
    public static void main(String[] args) {
      Date currentDate = new Date();
        System.out.println(currentDate);
        System.out.println(currentDate.getTime());//获取1970年1月1日到现在的毫秒数
        System.out.println(currentDate.toLocaleString());//获取当前时间的字符串

        int year = currentDate.getYear() + 1900;        // 获取年份(从1900开始)
        int month = currentDate.getMonth() + 1; // 获取月份(从0开始,需要加1)
        int day = currentDate.getDate();// 获取日期
        // 获取小时、分钟、秒
        int hours = currentDate.getHours();
        int minutes = currentDate.getMinutes();
        int seconds = currentDate.getSeconds();

        java.sql.Date date1 = new java.sql.Date(System.currentTimeMillis());
        System.out.println(date1);//只有年月日
        String t="2019-8-20";
        java.sql.Date date2 = java.sql.Date.valueOf(t);//将字符串转化为日期
        System.out.println(date2);
    }
}

4.2、SimpleDateFormate和DateFormate类

import java.text.DateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
//日期类
public class TestDate {
    public static void main(String[] args) {
        Date currentDate = new Date();

        // 创建 SimpleDateFormat 对象并指定日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 格式化日期
        String formattedDate = sdf.format(currentDate);
        System.out.println("SimpleDateFormat Date: " + formattedDate);

        //创建格式化日期格式为:"yyyy-MM-dd hh:mm:ss";因为DateFormat是一个抽象类不能new对象,所以new一个他的子类;这叫多态
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String format = dateFormat.format(currentDate);//格式化这个日期类,返回String字符串
        System.out.println("DateFormat Date: "+format);//2022-05-16 10:03:29
    }
}

SimpleDateFormat sdf = new SimpleDateFormat(“日期格式字符串”);
日期格式字符串,如:“yyyy-MM-dd hh:mm:ss”
yyyy 代表4位的年份
MM 代表2位的月份
dd 代表2位的日期
hh/HH 12小时制/24小时制
mm 代表分钟
ss 代表秒钟
a 代表AM/PM

4.3、Calender类日期类

import java.text.SimpleDateFormat;
import java.util.*;

public class TestCalendar {
    public static void main(String[] args) {
        //Calendar这也是一个抽象类,需要new他的子类
        Calendar calendar = new GregorianCalendar();
        System.out.println(calendar);
        System.out.println(calendar.get(Calendar.YEAR));//获取年月日
        System.out.println(calendar.get(Calendar.MARCH)+1);//月是从0开始的
        System.out.println(calendar.get(Calendar.DATE));

        System.out.println(calendar.getActualMaximum(Calendar.DATE));//获取当前月最大天数

        //日期类和日历类相互转化
        // 1. Date 转 Calendar
        Date currentDate = new Date();
        Calendar calendarFrom = Calendar.getInstance();
        calendarFrom.setTime(currentDate);
        // 输出 Calendar 对象的日期和时间
        System.out.println("1. Calendar from Date:");
        printCalendar(calendarFrom);
        // 2. Calendar 转 Date
        Calendar calendarTo = Calendar.getInstance();
        calendarTo.set(2023, Calendar.JANUARY, 1); // 2023-01-01
        Date date = calendarTo.getTime();
        // 输出转换后的 Date 对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("\n2. Date from Calendar: " + sdf.format(date));
    }
    private static void printCalendar(Calendar calendar) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("  Time: " + sdf.format(calendar.getTime()));
    }
}

五、JDK8日期类

​ 在 Java 8 中,引入了新的日期和时间 API,这个 API 位于 java.time 包中。以下是一些 Java 8 中日期和时间 API 的常用类:

属性含义
Instant代表的是时间相当于Date
LocalDate代表日期,比如2022-01-14
LocalTime代表时间,比如12:20:30
LocalDateTime代表具体时间,比如2022-01-14 12:20:30
ZonedDateTime代表一个包含时区的完整的日期时间
DateTimeFormatter日期和字符串格式转换

5.1、LocalDate

import java.time.LocalDate;

public class LocalDateExample {
    public static void main(String[] args) {
        // 获取当前日期
        LocalDate currentDate = LocalDate.now();
        // 创建指定日期
        LocalDate specificDate = LocalDate.of(2023, 1, 1);
        // 获取日期属性
        int year = specificDate.getYear();
        int month = specificDate.getMonthValue();
        int dayOfMonth = specificDate.getDayOfMonth();
        int dayOfWeek = specificDate.getDayOfWeek().getValue();
        int dayOfYear = specificDate.getDayOfYear();
        // 在当前日期基础上加上一天
        LocalDate nextDay = currentDate.plusDays(1);
        // 在当前日期基础上减去一周
        LocalDate lastWeek = currentDate.minusWeeks(1);
    }
}

5.2、LocalTime

import java.time.LocalTime;

public class LocalTimeExample {
    public static void main(String[] args) {
        // 获取当前时间
        LocalTime currentTime = LocalTime.now();
        // 创建指定时间
        LocalTime specificTime = LocalTime.of(12, 30, 45);
        // 获取时间属性
        int hour = specificTime.getHour();
        int minute = specificTime.getMinute();
        int second = specificTime.getSecond();
        int nano = specificTime.getNano();
        // 在当前时间基础上加上一小时
        LocalTime nextHour = currentTime.plusHours(1);
        // 在当前时间基础上减去半小时
        LocalTime halfHourAgo = currentTime.minusMinutes(30);
    }
}

5.3、LocalDateTime

import java.time.LocalDateTime;

public class LocalDateTimeExample {
    public static void main(String[] args) {
        // 获取当前日期和时间
        LocalDateTime currentDateTime = LocalDateTime.now();
        // 创建指定日期和时间
        LocalDateTime specificDateTime = LocalDateTime.of(2023, 1, 1, 12, 30, 45);
        // 在当前日期和时间基础上加上一天
        LocalDateTime nextDay = currentDateTime.plusDays(1);
        // 在当前日期和时间基础上减去一周
        LocalDateTime lastWeek = currentDateTime.minusWeeks(1);
    }
}

5.4、ZoneDateTime

import java.time.ZonedDateTime;
import java.time.ZoneId;

public class ZonedDateTimeExample {
    public static void main(String[] args) {
        // 获取当前日期和时间(带时区信息)
        ZonedDateTime currentDateTimeWithZone = ZonedDateTime.now();
        // 创建指定日期和时间(带时区信息)
        ZonedDateTime specificDateTimeWithZone = ZonedDateTime.of(2023, 1, 1, 12, 30, 45, 0, ZoneId.of("America/New_York"));
        // 在当前日期和时间基础上加上一天(带时区信息)
        ZonedDateTime nextDayWithZone = currentDateTimeWithZone.plusDays(1);
        // 在当前日期和时间基础上减去一周(带时区信息)
        ZonedDateTime lastWeekWithZone = currentDateTimeWithZone.minusWeeks(1);
    }
}

六、Math类和Random类

6.1、Math类

java.lang.Math 类包含用于执行基本数学运算的静态方法。这些方法提供了对常见数学函数的访问,如三角函数、指数函数、对数函数等。

public class MathExample {
    public static void main(String[] args) {
        // 基本数学运算
        int sum = Math.addExact(5, 3); // 返回两个整数的和,溢出时抛出异常。
        int difference = Math.subtractExact(8, 3); // 返回两个整数的差
        int product = Math.multiplyExact(4, 7); //返回两个整数的积
        int incremented = Math.incrementExact(10); // 返回参数的值加 1
        int decremented = Math.decrementExact(7); //返回参数的值减 1
        int negated = Math.negateExact(9); // 返回参数的负值

        // 取整和舍入
        double ceilValue = Math.ceil(3.14); // 4.0 返回不小于参数的最小整数
        double floorValue = Math.floor(3.14); // 3.0 返回不大于参数的最大整数
        long roundedValue = Math.round(3.14); // 3 返回参数最接近的整数

        // 指数和对数
        double expValue = Math.exp(2.0); // 7.3890560989306495  返回自然数底数 e 的指数
        double logValue = Math.log(10.0); // 2.302585092994046   返回参数的自然对数
        double powValue = Math.pow(2.0, 3.0); // 8.0  返回 a 的 b 次幂

        // 三角函数
        double sinValue = Math.sin(Math.toRadians(30)); // 0.49999999999999994 返回角的正弦
        double cosValue = Math.cos(Math.toRadians(60)); // 0.5000000000000001返回角的余弦
        double tanValue = Math.tan(Math.toRadians(45)); // 0.9999999999999999 返回角的正切
    }
}

6.2、Random类

  • 构造

    Random random =new Random();
    
  • 获得随机数

    Random.nextInt(100);
    

    代码示例:

    import java.util.Random;
    public class TestRandom {
        public static void main(String[] args) {
            Random random = new Random();
            System.out.println(random.nextInt(100));//获取100以内的随机整数
            System.out.println(random.nextFloat());//获取浮点随机
        }
    }
    

七、枚举类

所有的枚举类型隐性地继承自java.lang.Enum, 枚举的实质还是类。

代码示例:

// 定义一个简单的枚举类型
enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

public class EnumExample {
    public static void main(String[] args) {
        // 使用枚举常量
        Day today = Day.MONDAY;
        System.out.println("Today is " + today);

        // 枚举常量的比较
        if (today == Day.MONDAY) {
            System.out.println("It's a workday.");
        }

        // 遍历枚举值
        System.out.println("Days of the week:");
        for (Day day : Day.values()) {
            System.out.println(day);
        }
    }
}

八、System类

  • System.in : 标准输入流
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your name: ");
String name = scanner.nextLine();
System.out.println("Hello, " + name + "!");
  • System.exit(int status) :退出程序
System.exit(0); // 正常退出
System.exit(1); // 异常退出
  • System.currentTimeMillis() :获取当前时间毫秒数
long currentTimeMillis = System.currentTimeMillis();
System.out.println("Current time in milliseconds: " + currentTimeMillis);

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

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

相关文章

怎样解决微信上传头像失败的问题?照片尺寸修改方法分享

微信上传头像失败是大家经常遇到的问题之一&#xff0c;其中的原因有可能是因为网络问题&#xff0c;也有可能是因为图片本身的问题&#xff0c;比如图片尺寸不符合平台要求&#xff0c;这时候&#xff0c;我们只需要通过给照片尺寸修改一下就可以解决&#xff0c;那么怎么修改…

开源vs闭源,大模型的未来在哪一边?

开源和闭源&#xff0c;两种截然不同的开发模式&#xff0c;对于大模型的发展有着重要影响。开源让技术共享&#xff0c;吸引了众多人才加入&#xff0c;推动了大模的创新。而闭源则保护了商业利益和技术优势&#xff0c;为大模型的商业应用提供了更好的保障。 那么&#xff0c…

使用Sui天气预言机获取全球实时天气数据

新的Sui天气预言机为全球1000多个城市的建设者提供天气数据&#xff0c;并作为一个独特的随机数生成器&#xff0c;适用于需要可信赖的随机结果的游戏和投注应用。它由基于Sui的智能合约和一个从OpenWeather API获取天气数据的后端服务组成&#xff0c;任何人都可以将天气数据集…

达索系统3DEXPERIENCE WORKS 2024 结构仿真功能增强

simulia结构仿真是什么&#xff1f; 不仅能对结构进行力学、热学、声学等多学科计算&#xff0c;辅助于设计方案的优化&#xff1b;还能采用数字化技术模拟产品性能&#xff0c;大幅节约试验和样机迭代成本。达索系统3DEXPERIENCE WORKS 2024 结构仿真为企业提供随需应变、精准…

多线程(进程池代码)

线程池介绍 那究竟什么是线程池呢&#xff1f; 线程池是一种线程使用模式. 线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能. 而线程池维护着多个线程&#xff0c;等待着监督管理者分配可并发执行的任务. 这避免了在处理短时间任务时创建与销毁线程的代价. 线…

JehanRio‘s 后端高频面试题合集

文章目录 前言JehanRios 后端高频面试题合集第一轮刷题第二轮刷题第三轮刷题 前言 先贴一张图&#xff0c;目前我刷题的记录大概是350多题&#xff0c;加上牛客刷的&#xff0c;差不多有400道题了吧&#xff0c;可能比这个数量少一些。我从22年1月开始陆陆续续刷题&#xff0c;…

基于Spring原生框架构建原生Spring的第一个程序!

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

找免费4K高清图片素材,就上这6个网站

使用图片素材怕侵权&#xff1f;那就上这6个网站&#xff0c;免费下载&#xff0c;4K高清无水印&#xff0c;赶紧收藏起来~ 1、菜鸟图库 https://www.sucai999.com/pic.html?vNTYxMjky 一个很大的素材库&#xff0c;站内主要还是以设计素材为主&#xff0c;像图片素材就有上百…

2023极客大挑战-AGRT战队wp

目录 RE Shiftjmp 点击就送的逆向题 幸运数字 ​编辑 砍树 小黄鸭 flower-or-tea mySelf 是男人就来扎针 听说cpp很难&#xff1f; Easymath 寻找初音未来 Rainbow 浪漫至死不渝 ezandroid Pwn nc_pwntools password ret2text write1 ret2libc ezpwn wr…

Kubernetes基础(九)-标签管理

1 概述 Label&#xff08;标签&#xff09;是Kubernetes系统中一个比较重要的概念&#xff0c;给某个资源对象&#xff08;Node、Pod、Service等&#xff09;定义一个Label&#xff0c;就相当于给它打了一个标签&#xff0c;然后可以通过Label Selector&#xff08;标签选择器…

【C++】类型转换 ⑤ ( 常量和非常量之间的类型转换 - 常量类型转换 const_cast | const 左数右指原则 | 代码示例 )

文章目录 一、const 关键字简介1、const 修饰普通数据2、const 修饰指针 ( 左数右指原则 | 指针常量 | 常量指针 ) 二、常量和非常量 之间的类型转换 - 常量类型转换 const_cast1、常量类型转换 const_cast2、常量不能直接修改3、修改常量值的方法4、特别注意 - 确保指针指向的…

vs2019 - MFC对话框程序的工程名称不支持下划线命名法

文章目录 vs2019 - MFC对话框程序的工程名称不支持下划线命名法概述笔记备注END vs2019 - MFC对话框程序的工程名称不支持下划线命名法 概述 正在写账单分析程序, 用MFC 对话框. 因为比较习惯下划线命名法, 就在向导中给工程名称起了一个my_test这样的名称(下划线命名法, 小…

SpringBoot自动配置注入Bean工具autoconfigure

依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency> yml配置 student:red: com.ma.config.MinIOConfigProperties spring.factories org.springframework.…

LeetCode Hot100 42.接雨水

题目&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 方法一&#xff08;相向双指针&#xff09;&#xff1a;竖着计算面积 代码&#xff1a; class Solution {public int trap(int[] he…

Taro3+Vue3重构Mpvue小程序项目踩坑记

1、Taro小程序编译时报错&#xff1b; 原因:页面中存在小程序识别不了的标签&#xff1b;如div解决方法&#xff1a; 将div标签替换成小程序可识别的标签&#xff1b; 安装Taro中提供的插件:tarojs/plugin-html, 使其可被识别&#xff1b; 插件安装教程参考Taro官网&#xff1…

Flink Flink中的合流

一、Flink中的基本合流操作 在实际应用中&#xff0c;我们经常会遇到来源不同的多条流&#xff0c;需要将它们的数据进行联合处理。所以 Flink 中合流的操作会更加普遍&#xff0c;对应的 API 也更加丰富。 二、联合&#xff08;Union&#xff09; 最简单的合流操作&#xf…

「我在淘天做技术」迈步从头越 - 阿里妈妈广告智能决策技术的演进之路

作者&#xff1a;妙临、霁光、玺羽 一、前言 在线广告对于大多数同学来说是一个既熟悉又陌生的技术领域。「搜广推」、「搜推广」等各种组合耳熟能详&#xff0c;但广告和搜索推荐有本质区别&#xff1a;广告解决的是“媒体-广告平台-广告主”等多方优化问题&#xff0c;其中媒…

手机便签app哪个比较好用?

手机便签类软件的种类是比较多的&#xff0c;不管是安卓手机品牌还是苹果手机品牌的手机&#xff0c;在手机的应用商店中搜索“便签”&#xff0c;大家会找到很多便签类软件。那么&#xff0c;手机便签APP哪个比较好用呢&#xff1f; 在选择手机便签APP时&#xff0c;大家比较…

详解原生Spring中的控制反转和依赖注入-构造注入和Set注入

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

Java变量理解

成员变量VS局部变量的区别 语法形式&#xff1a;从语法形式上看&#xff0c;成员变量是属于类的&#xff0c;而局部变量是在代码块或方法中定义的变量或是方法的参数&#xff1b;成员变量可以被 public,private,static 等修饰符所修饰&#xff0c;而局部变量不能被访问控制修饰…