第三天Java基础(String对象,static关键字,静态,Arrays类,Math类,继承,抽象,接口)

Java static关键字深度解析:从字节码到JVM内存模型 static是Java中连接语言语法与JVM底层机制的核心概念,其本质并非‘静态存储’,而是通过ACC_STATIC标志位实现类级别绑定。它决定字段和方法在类加载准备阶段即分配内存(Metaspace中),生命周期与类同步,不依赖对象实例。这一特性支撑了工具类设计、单例模式、常量定义和静态内部类等关键实践,同时带来内存泄漏、类加载死锁、序列化异常等典型风险。理解static需回归字节码层面——static方法无this指针,调用使用invokestatic指令;static变量初始化发生在<clinit>方 阅读详情

1.字符串常量池

使用双引号包裹的都存在“字符串常量池”中。

2.字符串常用的方法

1.equals(String);//区分大小写
2.equalsIgonreCase(String);//不区分

3.length();//字符串长度
4.concat(String);//拼接字符串
5.charAt(int);//获取指定位置的单个字符串
6.indexOf(String);//查找字符串首次出现的位置,如果没有返回-1

7.subString(int);//截取
8.subString(int begin,int end);//从begin到end截取[)

9.toCharArray();//拆分
10.getBytes();//拆分
11.replace(CharSequence oldString,CharSequence newString);
//oldString被newString替换

12.split(String);//切割
注意不能以英文中的点“.”为切割元素,需要转译为“杠杠点\.”才能分割。

3.字符串小练习

判断键盘输入字符串的种类:

/**
 * 键盘输入,统计字符串种类,大小写字母,数字或其他
 * 1.使用键盘Scanner
 * 2.接收String str = sc.next();
 * 3.需要比较单个字符char[] ch = str.toCharArray();
 * 4.遍历char[],定义四个变量进行累加 ++
 * 打印
 */
 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入:");
        String str = sc.next();
        char[] ch = str.toCharArray();
        int countUpper = 0;
        int countLower = 0;
        int countNuber = 0;
        int countOther = 0;
        for (int i = 0 ; i < ch.length ; i++ ){
            if ('A'<= ch[i] && ch[i] <= 'Z'){
                countUpper++;
            }else if ('a'<= ch[i] && ch[i] <= 'z'){
                countLower++;
            }else if('0'<= ch[i] && ch[i] <= '9'){
                countNuber++;
            }else{
                countOther++;
            }
        }
        System.out.println("大写字母有:"+countUpper+"个,小写字母有:"+countLower+"个,数字有:"+countNuber+"个,其他的有:"+countOther+"个。");
    }

4.static

1.静态方法和属性都属于类,不属于对象,所以可以直接用类名进行调用。
2.静态属性内存图
在这里插入图片描述
3.静态代码块的典型用途:
为静态属性进行赋值
当首次执行类是,类中的静态代码块将优先于非静态代码块执行,且只执行一次
在这里插入图片描述

5.Arrays工具类

1.Arrays.toString(new int[]{1,2,3});// [1,2,3]
2.Arrays.sort(new int[]{3,2,1});//从小到大排序
3.将一个随机字符串进行排序,然后倒序打印

/**
 * 将一个随机字符串进行排序,然后倒序打印
 * 1.需要一个String str;
 * 2.需要用到Arrays.sort进行排序。
 * 3.需要把String str -->char[],用到toCharArray();
 */
public class DayArrays01 {
    public static void main(String[] args) {
        String str = "Sdfsadf1654sd1f65412";
        char[] chars = str.toCharArray();
        Arrays.sort(chars);
        for (int i = chars.length - 1; i >= 0; i--) {
            System.out.println(chars[i]);
        }
    }

6.Math类(数学工具)

1.4+1种方法

  • public static double abs();绝对值
  • public static double ceil();向上取整
  • public static double floor();向下取整
  • public static long round(double num);四舍五入
  • Math.PI=3.14…
    2.小练习
    -10.8到5.9当中,绝对值大于6或者小于2.5的整数有哪些?
/**
 * -10.8到5.9当中,绝对值大于6或者小于2.5的整数有哪些?
 * 范围是-10.8到5.9,那么for循环可定范围
 * 1.起始位置-10.8向上取整--> -10,使用Math.ceil(),或者直接转化为int舍去小数位。
 * 2.取绝对值,Math.abs(),怎么发现哪些是我们需要的,if(i>6||i<2.5)
 * 3.使用计数器来记录
 */
public class DayMath02 {
    public static void main(String[] args) {
        double min = -10.8;
        double max = 5.9;
        int coun = 0;
        for (int i =(int)Math.ceil(min); i < max; i++){
            if (Math.abs(i)>6||Math.abs(i)<2.5){
                coun++;
                System.out.print(i+",");
            }
        }
        System.out.println(coun);
    }
}

7.继承(extends)

1.Java语言是单继承的。
2.Java语言可以多级继承。
3.子类只能有一个父类,父类可以有多个子类。

8.抽象(abstract)

1.抽象方法所在的类一定是抽象类。
2.抽象类中可以有普通方法。
3.必须继承抽象类才能使用抽象类。
4.抽象类不能new创建。

9.发红包小练习

用户类:

package fahonbao;

public abstract class user {
    private String user;
    private int yuer;

    public user(){

    }
    public void show (){
        System.out.println("我叫:"+user+",我有"+yuer+"钱");
    }

    public user(String user, int yuer) {
        this.user = user;
        this.yuer = yuer;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public int getYuer() {
        return yuer;
    }

    public void setYuer(int yuer) {
        this.yuer = yuer;
    }
}

群主

import java.util.ArrayList;

public class qunzhu  extends user{
    public qunzhu(){
    }

    public qunzhu(String user, int yuer) {
        super(user, yuer);
    }

    public ArrayList<Integer> send(int m, int s) {
        ArrayList<Integer> arr = new ArrayList<>();
        //1.群主有多少钱
        int yuer = super.getYuer();
        if (yuer<m){
            System.out.println("对不起你的钱不够!");
            return arr;
        }
        //2.从群主的余额中扣,重新设置群众的钱
        super.setYuer(yuer-m);
        //3.如果够每一份应该多少钱
        int pj = m / s;
        //4.如果除不尽余钱给最后一个红包
        int yu = m % s;
        for (int i = 0 ; i < pj-1 ; i++){
            arr.add(pj);
        }
        arr.add(pj+yu);
        return arr;
    }
}

成员

public class chengyuan extends user {
    public chengyuan(){
    }
    public chengyuan(String user, int yuer) {
        super(user, yuer);
    }
    /**
     * 收钱的方法
     */
    public void sou(ArrayList<Integer> m){
        //1.从多个红包中抽一个
        int a = new Random().nextInt(m.size());
        Integer remove = m.remove(a);
        super.setYuer(super.getYuer()+remove);
    }
}

测试

public class TextOut {
    public static void main(String[] args) {
        qunzhu qun = new qunzhu("群主",100);
        chengyuan one = new chengyuan("成员A",0);
        chengyuan tow = new chengyuan("成员B",0);
        chengyuan three = new chengyuan("成员C",0);
        qun.show();
        one.show();
        tow.show();
        three.show();
        System.out.println("----------------------------");
        ArrayList<Integer> send = qun.send(20, 3);
        one.sou(send);
        tow.sou(send);
        three.sou(send);

        qun.show();
        one.show();
        tow.show();
        three.show();
    }
}

10.接口(interface)

1.关键字
interface
implements

注意;接口的实现类必须实现接口中的所有方法,否则实现类必须是抽象的。
Java8:中接口里允许定义默认方法:
在接口中型添加一个方法,子类不用重新去覆盖
主要用于解决接口升级的问题

public default void methodDefault(){
	//这个方法定义在接口当中,实现类可以无条件使用它
	//实现类也可以覆盖该方法
}

Java8中:static
接口中的静态方法

public static void MyInterfaceStatic(){
	//java8后接口中允许使用静态方法
	//该方法只能通过接口名+方法名进行调用
}

java9中:接口中允许使用private

private void MyInterfacePrivate(){
	//主要解决默认方法中重复代码的问题,且不会被实现类调用
}
private static void MyInterfacePrivateAndStatic(){
	//也可以于static一起使用
}

java9中:常量的使用

public static final int i = 10;
//固定写法

小结
在这里插入图片描述
注意事项
在这里插入图片描述
接口时允许多继承的

11.多态

多态指的是对象拥有多种形态,
代码中的体现就是
父类引用指向子类对象;
Fu f = new Zi();

11.1多态中成员变量的访问方式

变量两种访问方式:
1.直接通过对象名称去访问,看等号左边是谁,优先用谁,没有向上找。
2.间接通过成员方法去访问,看该方法属于谁,优先用谁,没有向上找。

11.2多态中成员方法的访问方式

1.看new的是谁,优先用谁,没有就向上找。
2.口诀:编译看左,运行看右。

11.3成员变量与成员方法访问方式对比

1:成员变量:编译看左,运行看左。
2:成员方法:编译看左,运行看右。

11.4多态中父类引用是没办法调用子类特有的方法的

重要重要重要

Fu fu = new zi();
fu.ziOne();//ziOne()是子类特有的方法,fu是调用不到的。

11.5多态中(instanceof)关键字的使用

Animal animal = new Cat();
if(animal instanceof Dog){//判断animal原来的类型是不是Dog
	Dog dog = animal;//如果是向下转型
}else if(animal instanceof Cat){
	Cat cat= animal;//如果是向下转型====  该代码执行  ======
}

12.计算机类小练习

//计算机类
package computer;
public class Computer {
    public void open(){
        System.out.println("打开电脑");
    }
    public void clos(){
        System.out.println("关闭电脑");
    }
    public void openUSB(Usb usb){
        if (usb instanceof Sb){
            Sb sb = (Sb) usb;
            sb.open();
            sb.dianji();
            sb.clos();
        }else if(usb instanceof Jp){
            Jp jp = (Jp) usb;
            jp.open();
            jp.type();
            jp.clos();
        }

    }
}
//键盘类
package computer;

public class Jp implements Usb{
    @Override
    public void open() {
        System.out.println("打开键盘!");
    }

    @Override
    public void clos() {
        System.out.println("关闭键盘!");
    }

    public void type (){
        System.out.println("敲键盘!");
    }
}
//鼠标类
package computer;

public class Sb implements Usb{
    @Override
    public void open() {
        System.out.println("打开鼠标!");
    }

    @Override
    public void clos() {
        System.out.println("关闭鼠标!");
    }
    public void dianji(){
        System.out.println("点击鼠标!");
    }
}
//usb接口
package computer;
public interface Usb {
    public void open();
    public void clos();
}

13.final修饰符

14.public、protected、(default)、private

在这里插入图片描述

PLC与变频器联动控制:从开关量、模拟量到通讯的接线与编程实战 在工业自动化系统中,电机调速控制是核心需求之一,其关键在于实现可编程逻辑控制器(PLC)与变频器之间的可靠联动。其基本原理是通过PLC输出控制信号,由变频器接收并驱动电机按设定速度运行。这项技术的核心价值在于实现电机的软启停、精确调速与节能控制,广泛应用于风机、水泵、传送带及精密张力控制等场景。其中,开关量控制以其接线简单、抗干扰能力强的特点,成为基础且可靠的方案;而模拟量控制则能实现无级平滑调速,满足更高精度的工艺要求。本文以西门子、三菱等主流品牌为例,深入解析了这两种主流控制方式的硬件接线、参数设置与梯 阅读详情

相关推荐

线阵相机标定必看:如何用Halcon实现亚毫米级精度测量(以HC050标定板为例)

本文以HC050标定板为例,详细阐述了如何利用Halcon实现线阵相机的高精度标定,以达到亚毫米级测量。文章深入剖析了线阵相机标定的核心原理、面临的独特挑战,并提供了从硬件搭建、图像采集到Halcon软件实操的完整路径,重点解析了运动参数设置、精度验证及常见问题排错,为精密测量应用提供系统解决方案。

weixin_29213655的博客 313

java onetowthree替换_Java程序问答 :为啥最后俩个输出是one two?

package com.test.service.user;import java.util.Arrays;import java.util.Iterator;import java.util.List;import java.util.SortedSet;import java.util.TreeSet;import org.springframework.core.AliasRegistry;...

weixin_29927289的博客 375

统信UOS/麒麟ARM桌面版,不联网也能用Docker部署MySQL 5.7(离线部署详解)

本文详细介绍了在统信UOS/银河麒麟ARM桌面版系统中,如何离线部署MySQL 5.7的完整流程。通过Docker技术实现环境隔离和依赖封装,解决了封闭网络环境下的部署难题,包括资源准备、系统配置、容器化部署及安全加固等关键步骤,为政企和科研场景提供实用解决方案。

weixin_30892037的博客 230

Java中的string类详解

Java中的string类详解 Java中的字符串类String是程序中使用十分频繁而且在各大公司招聘笔试中必考的知识点之一。本文主要String的用法进行分析。 用String来定义一个字符串一般有两种方法: 1.String str=”hello world”;, 2.String str=new (“hello world ”); 第一种方式:String str=”hel

有图有真相 2057

KAN神经网络实战:如何用Python快速搭建你的第一个可解释性模型

本文提供了使用Python和PyTorch快速搭建首个KAN(Kolmogorov-Arnold Networks)神经网络模型的实战指南。通过对比传统MLP,详细解析了KAN利用可学习的边函数实现更高可解释性的核心原理,并逐步演示了从环境配置、数据准备、核心模块实现到模型训练与可视化的完整流程,帮助开发者掌握这一新兴的可解释性AI模型构建方法。

convnet3designer的博客 474

金蝶云星空应用开发初级考试题目汇总

摘要:本文为金蝶云星空应用开发初级考试题目汇总

2401_86113757的博客 3799

124/125.JAVA入门__String案例

String案例 拼接字符串。 package com.itheima; public class one_124 { public static void main(String[] args) { int[] arr ={1,2,3}; String s2 = method1(arr); System.out.println(s2); } public static String method1(int[] arr){ String s = ""; s += "["; for(i

天天DEBUG 168

Multisim 14.0元件库下载完整指南:从安装到配置

详细介绍Multisim 14.0版本的元件库下载方法,涵盖安装步骤与后续配置流程,帮助用户快速搭建仿真环境。内容覆盖常见问题及解决方案,让multisim元件库下载更高效、稳定。

weixin_34511754的博客 1937

JAVA编程思想第四版笔记 五、初始化与清理

初始化与清理 5.1用构造器确保初始化 创建对象时,若类具有构造器,java就会在用户有能力操作对象之前自动调用相应的构造器,从而保证初始化的进行。 class Rock{ Rock(){//这是一个构造器 System.out.print("Rock"); } } public class SimpleConstructor{ public static void main(String[] args){ for(int i = 0; i<3

HongHu-ing的博客 278

SAP SD跨公司销售IDOC自动记账配置实战指南

本文详细介绍了SAP SD模块中跨公司销售IDOC自动记账的配置实战指南。通过IDOC技术实现集团企业间交易的自动化处理,显著提升财务效率和准确性。文章涵盖前置配置、RFC连接、合作伙伴参数设置及财务科目分配等关键步骤,并提供了常见错误排查和性能优化建议,帮助用户快速掌握这一高效业务流程。

weixin_29284885的博客 772

数据中台:大数据平台,数据仓库(DM),数据中台之间的联系以及异同分析

大数据平台是一个技术平台。这个技术平台提供了对于大数据的分布式采集,存储,流处理和计算,实时分析等能力。在没有大数据平台前也有数据集成和管理的平台,这种平台可以实现对结构化数据本身的采集,集成和管理。 管理平台,是在原生的大数据生态的基础之上,为了更好的管理集群服务,管理集群的资源,提供灵活SRE能力和资源核算审计能力的一系列工具和合称整体架构数据中台包括数据仓库的全部内容,数据仓库为数据中台提供了数据对外提供服务的基础资源,数据中台将数据仓库建设的投入价值进行最大化,以加快数据赋能业务的速度大家都知道数据

GIS摆渡人 2135

JAVA面向对象程序设计

指的是同一方法调用,由于对象不同可能会有不同的行为。前提必须存在继承方法,最重要是父类引用要指向子类对象。@Override// 表示s没有指向任何对象实体say(null);

2301_79922499的博客 1149

【AIZ智能体】Codex 全能AI助手从部署到使用实战操作详解

Codex 全能AI助手从部署到使用实战操作详解

congge 2988

Java基础知识总结(第七篇):常用类:包装类、日期类以及String、StringBuffer、Builder、Math 、Arrays 、System 、BigInteger和BigDecimal

java常用类介绍:包装类、日期类以及String、StringBuffer、Builder、Math 、Arrays 、System 、BigInteger和BigDecimal

2301_76144723的博客 971

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

《Java之面向对象:下》

面向对象基础(下)

TheMyth142857的博客 1290

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Java接口及常用类

Java接口接口接口与类相似点接口与类的区别接口特性抽象类和接口的区别接口的声明接口的实现接口的继承接口的多继承 接口   接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。   接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。   除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。   接口无法被实例化,但是

qq_45491549的博客 544

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【Java语法与编程基础】--笔记

本文摘要:本文系统介绍了Java编程基础语法和核心概念,包括数据类型、变量、运算符、控制结构、数组、方法等基本语法要素,并深入讲解了面向对象编程原理。内容涵盖基本语法规则、程序控制流程、数据结构处理、方法定义与调用,以及面向对象的核心特性如封装、继承、多态等。文章还介绍了Java内存管理机制、static和final关键字用法,以及枚举类的定义和使用。通过实例代码展示了算法实现和编程技巧,为Java初学者提供了全面的语法参考和编程指导。

weixin_51005254的博客 601

java语言基础

这里写目录标题成员变量和局部变量this关键字匿名对象ArrayList类String类静态类静态代码块Arrays类Math类继承一级目录一级目录一级目录一级目录一级目录一级目录二级目录三级目录 成员变量和局部变量 变量 位置 作用范围 初始化 成员变量 类中,方法外 类中 有默认值 局部变量 方法内 方法中 没有默认值,要定义赋值才能用 this关键字 this:代表所在类的当前对象的引用(地址值),即对象自己的引用 匿名对象 1.举例 new Scanner(System.in

weixin_43638614的博客 570

常用关键字

《常用关键字》 static关键字 String类 Arrays类 Math类 三大特征---继承 方法重写 super关键字 this关键字 抽象类 字符串的内容永远不可改变。【重点】 正是因为字符串的内容永远不可改变,所有字符串是可以共享使用的。 字符串效果上相当于是char[]字符数组,但是底层原理是byte[]字节数组。 三种构造方法: public String().

weixin_51621893的博客 795

Java第一部分:Java基本语法

JavaSE个人学习笔记(2020年10月) 这是我第一次写博客,用以记录我在学习过程中的笔记,也可以分享给有需要的人。 背景:2020年9月,作为跨考生进入浙江大学软件工程专业读研。 目标: 时间:两年半毕业之后; 职位:Java后端开发; 能够顺利入职大厂,找到心仪的工作。 学习内容和时间:JavaSE课程(视频来自于b站Idea黑马)、2020年10月。 文档内容:在JavaSE课程结束之后,回顾一下30天的所学所得,将重要的笔记内容再记录一遍。 目录JavaSE个人学习笔记(2020年10月)第一部

yyistiger的博客 247

java 从零学起 --- 面向对象

JAVA面向对象 1.类与对象的概念:类就像是一个模板,而对象是类的一个实例化对象。拿生活中的例子来说,类就是一张设计图纸,而对象就是根据这张图纸建造出来的实物。 2.面向对象的三大特征:封装、继承、多态。 封装:把同一类事物所具有的共同属性和共同行为功能抽取到Java类中的过程称为封装并将类里面的数据和行为进行保护。常用方法为:设置数据的访问修饰符为private,这样外部的事物就不能随意更改类中的数据。 继承:子类继承父类的所有非private成员。 多态:关于多态需要记住三句话: (1)父类类型的变量

qq_45030497的博客 283

黑马程序员Java课程笔记008String、static、Arrays、Math等常用API

黑马程序员Java课程笔记008第一章 String类1.1 字符串的概述和特点1.2 字符串的构造方法和直接创建1.3 字符串的常量池1.4 字符串的比较相关方法1.5 字符串的获取相关方法1.6 字符串的截取方法1.7 字符串的转换相关方法1.8 字符串的分割方法1.9 练习题1.9.1 练习一_按指定格式拼接字符串1.9.2 练习二_统计输入的字符串中字符的个数第二章 static静态2.1 静态static关键字概述2.2 静态static关键字修饰成员变量2.3 静态static关键字修饰成员方法

qq_44005101的博客 1197

java-static

今日内容 static关键字 String类 Arrays类 Math类 三大特征—继承 方法重写 super关键字 this关键字 抽象类 ​ String类的概述 【重点】 概述 ​ java.lang.String类代表字符串,java程序中的所有的字符串文字,"abc"都可以看做是String类的实例。 ​ 程序当中的所有的双引号字符串,都是String类的对象。(没有new,也是对象)。 字符串的特点:

qq_37413300的博客 125

Java static关键字深度解析:类加载、内存模型与工程实践

static是Java中实现类级别资源共享的核心机制,其本质是绑定类生命周期、绕过对象实例化的资源管理协议。它依托JVM类加载的准备与初始化阶段完成内存分配和值设定,确保static变量存于Metaspace、方法通过invokestatic指令高效调用。该机制支撑了main入口、工具类封装、配置中心构建等关键技术价值,在Spring Boot、微服务、热部署等场景中直接影响类隔离性、线程安全与内存稳定性。理解static必须结合ClassLoader双亲委派模型与JVM内存模型,避免因多加载器导致的‘同名

chuanjiaoye5017的博客 403

java面向对象

面向对象 面向对象 面向对象和面向过程的区别 面向过程:当要实现一个功能的时候,每一个具体步骤都要亲历亲为,详细处理每一个细节 面向对象:类似包工头,我不关心项目实施的每一个步骤,我只关心项目的结果。 两者的区别:面向对象强调的是对象,面向过程强调步骤 面向对象的特点:将复杂事务简单化,从执行者变成指挥者,面向对象的语言中,包含了三大基本特征,即封装,继承和多态。 --Demo01Pri...

weixin_44446122的博客 246

Java基础(详细)

该篇博客总结了我在学习Java基础知识的一些重点知识,以方便以后的复习,希望能够帮到大家。

weixin_43978453的博客 525
上一篇: 第二天Java进阶晚上(常用的API)
下一篇: 第四天Java基础01(内部类、Obj、Data、Calendar、System、StringBuilder、iterator、泛型、斗地主)
RestartJava
博客等级 码龄7年 1粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值