java_note8

面向对象总结

类 属性 方法 类变量 最终类 继承 父类extends 子类 重写(覆盖) 重载 构造方法 重载构造方

法 抽象类 抽象方法 接口 内部类 静态程序段 静态成员 静态方法 静态导入 初始化程序段 包

java1.8 接口 static实现方法 default实现方法,函数式接口

static

final

private public protected

this

super

extends

implements

interface default

abstract

package org.beiyou.oa;

@Override 注解

instanceof

实例化 new 方法 形参 实参 返回值 return 6;

结束void方法return;递归方法 装箱 拆箱 对象 基本类型相互转换

1.record extends java.lang.Record 类
public record User(int id,String name){
    
}
2.enum extends java.lang.Enum 类

对象的实例个是固定的,自动实例化,构造器默认 只能是private

3.面向对象 oop
package 包;
  • 属性
  • 方法 方法名 形参 实参 返回值 return; return 16; void
    • 入口方法
    • 构造方法
    • 递归方法
    • 重载方法
    • 重写方法在继承时子类可以重写方法
  • 初始块 在执行构造前,会自动所有初始化代码
  • 静态程序块 在第一次实例化使用时执行所有静态程序块
  • 成员内部类

//保存A.java

public class A{
    
}
对象 - 就是实例对象 new 出来
A a = new A();
继承 extends final 类不允许被继承,没有子类
public class MyStr extends String{}//错误
  • super(16,“lisi”);

  • this 类自身对象

  • super 类的父类,存在重写的情况下会使用到

​ 在子类的构造方法第一行也会使用super();

  • 重载
  • 重写 覆盖
Parent p = new Son();
Son p = new Son();
抽象类 abstract class{} 使用的抽象类子类

抽象类 = 类 + 抽象方法

jdk体系 io  -  InputStream is = new FileInputStream();
//抽象方法
public abstract int square(int i);
//作用:
//抽象中的抽象方法,和子类继承关系,是一种编程规范。
spring 框架体系
接口 interface 使用的是接口的实现类,如果只有一个抽象方法,可以使用lambda表达来使用

接口 = 常量 + 抽象方法… + static 实现方法… + default实现方法…

接口可以多继承接口

interface A{}
interface B{}
interface C extends A,B{}
class D extends F implements A,B{
    
}
A d1 = new D();
//JAVA	是单继承多实现
//接口是多继承

声明接口的实现类

JDK 体系 集合 List Set Collection Map

jdbc 体系 全是接口 Java.sql.Connection;

(用interface 的规范来约束我们的实现类)

api-应用程序接口

枚举
enum Color{}
值类型
record Book(int id,String name){
    
}
面试题

计算1+2+3+…+100 = ?(不能使用循环语句,不能使用递归,不能直接写结果公式)

IntStream interface java 1.8新技术 流技术
    int sum = IntStream.rangeClosed(1,100).sum();
    System.out.println("1+2+3+...+100="+sum);

其中,求偶数和

    int sum = IntStream.rangeClosed(1,100).filter(e->e%2==0).sum();
    System.out.println("2+4+6+...+100="+sum);

字符串正则表达式

正则表达式,又称规则表达式,(Regular Expression,简写为regex、regexp或RE),一种文本模式,包括普通字符(eg. a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念.

正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。

在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开来的,后来在广泛运用于Scala 、PHP、C# 、Java、C++ 、Objective-c、Perl 、Swift、VBScript 、Javascript、Ruby 以及Python等等。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen.

6.1 String类

在java语言,是固定长度

String str = "hello";
str+=",java";
 ""
char c = 'a';
String d = "a";

字符串转义符

String s1 = "ok";
String s2 = "ok";
System.out.println(s1 == s2);
String s1 =new String("ok");
String s2 =new String("ok");
System.out.println(s1 == s2);

.concat() 相当于 + 字符串连接

System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s2));
System.out.println("hello中国".length());//7  字符数
//utf-8 编码下一个汉字占用三个字节
System.out.println("hello中国".getBytes().length);//  字节数

不可变的字符串对象,尽量少使用+=操作 ⭐

  • 字符串转义符号为 \
  • 常见的转义字符

转移字符对应的英文是escape character , 转义字符串(Escape Sequence),

字母前面加上捺斜线""来表示常见的那些不能显示的ASCII字符,称为转义字符.

如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

常用方法
  1. length() 字符个数
  2. equals equalsIgnoreCase方法
  3. trim方法
  4. substring方法
  5. concat()方法用于将指定的字符串参数连接到字符串上。
  6. contains() 判断是否包括某字符串,返回的是true 或false
  7. indexOf()返回子串的位置索引,没有返回-1
  8. lastIndexOf() 返回子串的位置索引,没有返回-1
  9. replace()替换返回
  10. split()拆分为String[]
  11. toLowerCase() toUpperCase()转换小写大写

转义字符

转义字符意义ASCII值(十进制)
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011
\代表一个反斜线字符’‘’092
代表一个单引号(撇号)字符039
‘’代表一个双引号字符034
\0空字符(NULL)000
\ddd1到3位八进制数所代表的任意字符三位八进制
\uhhhh三位八进制1到2位十六进制所代表的任意字符二位十六进制
文本块text block

文字块(text blocks)这个特性,首先在 JDK 13 中以预览版的形式发布。在 JDK 14 中,改进的文字块再次以预览版的形式发布。最后,文字块在 JDK 15 正式发布。

package cn.practice3;

public class TextBlock {
    public static void main(String[] args) {
        String htmlString = """
            <!DOCTYPE html>
            <html>
                <body>
                    <h1>"Hello World!"</h1>
                </body>
            </html>
            """;
        System.out.println(htmlString);
    }
}

使用三个双引号引起来的文本,就是我们所说的文字块语法了,“所见即所得”,不再有特殊字符了。

  1. 仅当文本块可以提高代码的清晰度时才使用文本块,特别是对于多行字符串。
  2. 如果字符串适合用例,则始终首选使用字符串。它们更有利于应用程序性能。
  3. 要保持所需的缩进,请始终使用相对于内容上最后一行的位置关闭三重引号的位置。
  4. 避免在复杂表达式(如 lambda 表达式或流操作)中使用内联文本块,以保持可读性。考虑重构为局部变量或静态最终字段。
  5. 仅使用空格或仅使用制表符来缩进文本块。混合空格将导致不规则缩进的结果。
面试题

1.将一个字符串数组进行分组输出,每组中的字符串都由相同的字符组成。

举个例子:输入[“eat”,”tea”,”tan”,”ate”,”nat”,”bat”]

输出[[“ate”,”eat”,”tea”],[“nat”,”tan”],[“bat”]]

package cn.practice3;

import java.util.Arrays;

public class StringGrouping {

        public static void main(String[] args) {
            //将一个字符串数组进行分组输出,每组中的字符串都由相同的字符组成。

            //举个例子:输入[“eat”,”tea”,”tan”,”ate”,”nat”,”bat”]
            //输出[[“ate”,”eat”,”tea”],[“nat”,”tan”],[“bat”]]

            String[] ls = new String[]{"age", "eat", "tea", "tan", "ate", "nat", "bat", "book", "bkoo"};
            System.out.println(Arrays.toString(ls));
            for (int n = 0; n < ls.length; n++) {
                String t = ls[n];
                if ("-".equals(t)) continue;
                for (int i = n + 1; i < ls.length; i++) {
                    if (is(t, ls[i])) {
                        ls[n] += "-" + ls[i];
                        ls[i] = "";
                    }
                }
            }
            System.out.println(Arrays.deepToString(ls));
            String ok = "";
            for (String t : ls) {
                if ("".equals(t) || "-".equals(t)) continue;
                ok += "," + t;
            }
            String[] oo = ok.substring(1).split(",");
            System.out.println(Arrays.toString(oo));
            StringBuilder su = new StringBuilder("[");
            for(String s : oo){
                String[] t = s.split("-");
                su.append(Arrays.toString(t)+",");
            }
            su.replace(su.lastIndexOf(","),su.lastIndexOf(",")+1,"]");
            System.out.println(su);
        }
        public static boolean is(String a, String b) {
            boolean f = false;
            if (a.length() == b.length()) {
                var aa = a.toCharArray();
                Arrays.sort(aa);
                var bb = b.toCharArray();
                Arrays.sort(bb);
                f = new String(aa).equalsIgnoreCase(new String(bb));
            }
            return f;
        }
        public static boolean isSame(String a, String b) {
            boolean f = true;
            if (a.length() == b.length()) {
                for (int i = 0; i < a.length(); i++) {
                    if (b.indexOf(a.charAt(i)) == -1) {
                        f = false;
                        break;
                    }
                }
                for (int i = 0; i < a.length(); i++) {
                    if (a.indexOf(b.charAt(i)) == -1) {
                        f = false;
                        break;
                    }
                }
            }
            return f;
        }
}

在这里插入图片描述

java11 字符串新特性方法

package cn.practice3;

import java.io.File;
import java.util.UUID;

public class StrNewCharacteristic {
    public static void main(String[] args) {
        String p = "d:/xxx/user/user_abc.jpg";
        System.out.println(p);//d:/xxx/user/user_abc.jpg
        //File.separator 是根据系统返回相关的符号 linux / windows \ \\

        String fc = File.separator;
        fc = !p.contains(fc) ? "/" : fc;
        System.out.println(fc);//   /

        String path = p.substring(0, p.lastIndexOf(fc)).concat(fc);
        System.out.println(path);//d:/xxx/user/

        String name = p.substring(p.lastIndexOf(fc) + 1);
        System.out.println(name);//user_abc.jpg

        String ext = name.lastIndexOf(".") == -1 ? "" : name.substring(name.lastIndexOf(".") + 1);
        System.out.println(ext);//jpg

        UUID uuid = UUID.randomUUID();
        String newp = String.format("%s%s.%s", path, uuid, ext);
        System.out.println(newp);//d:/xxx/user/86f2a496-2248-4608-a16c-07d9d3d1cb33.jpg
    }
}

在这里插入图片描述

java 11 string api

// 判断字符串是否为空白
" ".isBlank(); // true
// 去除首尾空格 .trim()
" Javastack ".strip(); // "Javastack"
// 去除尾部空格
" Javastack ".stripTrailing(); // " Javastack"
// 去除首部空格
" Javastack ".stripLeading(); // "Javastack "
// 复制字符串
"Java".repeat(3); // "JavaJavaJava"
// 行数统计
"A\nB\nC".lines().count(); // 3
package cn.practice3;

public class StrApi {
    public static void main(String[] args) {
        String str = "Java";
//        System.out.println(str.repeat(-2));// 小于0:java.lang.IllegalArgumentException

        System.out.println(str.repeat(0)); // 等于0:空白串("")

        System.out.println(str.repeat(3));//JavaJavaJava

//        System.out.println(str.repeat(Integer.MAX_VALUE));// java.lang.OutOfMemoryError

        System.out.println("A\nB\nC\rD".lines().count());// 4

        String s1 = " hello java 1.8 ";
        System.out.println(s1);// hello java 1.8

        //.concat() 方法相当于 + 属性字符串连接
        System.out.println("hello".concat(" ".repeat(30)).concat("java19"));//hello                              java19
        System.out.println("hello" + "\s".repeat(30) + "java19");//hello                              java19
        //\s  相当于空格  现在不推荐使用

        //清除首尾连续空格
        System.out.println(s1.trim());//hello java 1.8
        System.out.println(s1.strip());
        System.out.println(s1.stripLeading());
        System.out.println(s1.stripTrailing());

        //清除所有空格
        System.out.println(s1.replace(" ",""));
        System.out.println("------------");
        System.out.println("".isBlank());
        System.out.println("".isEmpty());
        System.out.println(" ".isBlank());//true
        System.out.println(" ".isEmpty());//false
        System.out.println(" ".trim().length() == 0 ? "空字符串" : "正确");
        System.out.println(" ".isBlank() ? "空字符串" : "正确");
        System.out.println("*".repeat(60));
        System.out.println("------------");

        //求字符串中行数
        System.out.println("hello\njava\nok\n123\nmysql");
        System.out.println("hello\njava\nok\n123\nmysql".lines().count());
    }
}
package cn.practice3;

import java.util.Calendar;

public class StrApi1 {
    public static void main(String[] args) {
        String str = "日一二三四五六";
        //toCharArray()
        char[] chars = str.toCharArray();
        System.out.println(chars[0]);//日

        //charAt(0)
        System.out.println(str.charAt(0));//日
        Calendar c = Calendar.getInstance();
        int w = c.get(Calendar.DAY_OF_WEEK);
        System.out.println("星期"+str.charAt(w-1));//星期二
        System.out.println("星期"+chars[w-1]);//星期二
    }
}
package cn.practice3;

import java.io.File;

public class StrFile {
    public static void main(String[] args) {
        //Linux
        String path = "c:\\users\\oa\\goods\\imag\\xxsf24.jpg";

        //window
        path = "c:/users/oa/goods/imag/xxsf24.jpg";

        //trim() 清楚左边 右边连接空格
        System.out.println("        hello    world     ".trim());//hello    world

        //replace() 是查找替换方法,查找空格,替换为"" 功能是清除所有的空格
        System.out.println("        hello    world     ".replace(" ",""));//helloworld

        //字符串截取操作
        System.out.println("hello, java17".substring(6));// java17

        String path1 = "c:/users/oa/goods/imag/xxsf24.jpg";

        //取出文件类型 jpg
        String ext = path1.substring(path1.lastIndexOf(".")+1);
        System.out.println(ext);//jpg

        System.out.println(System.getProperty("os.name"));//Windows 10
        //取出文件名 xxsf24.jpg
        String name = path1.substring(path1.lastIndexOf("/")+1);
        System.out.println(name);//xxsf24.jpg

        //File.separator linux 返回 / windows \\
        String name1 = File.separator.equals("/")?path.substring(path.lastIndexOf("/")+1):path.substring(path.lastIndexOf("\\")+1);
        System.out.println(name1);//c:/users/oa/goods/imag/xxsf24.jpg

        //取出文件路径 c:/users/oa/goods/imag
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值