Java笔记(2)

简介: Java命名规范:包名全小写,类与接口首字母大写驼峰式,枚举同上;方法小写驼峰式,动词开头;变量小写驼峰,常量全大写,下划线分隔;参数和局部变量同变量规则;布尔变量避免简单is或has开头。Java调试用jps、jhsdb、javap。常用API包括Math(如abs、ceil)、System(如exit、arraycopy)、Runtime(如getRuntime、exec)、Object(如toString、equals)、BigInteger(大整数操作)、正则表达式、日期处理和Collections(如addAll、shuffle)。

Java命名规范

包(Package):
    包名全部小写,通常采用反向域名的形式,例如:com.example.myproject

类(Class) 和 接口(Interface):
    首字母大写的驼峰式命名,例如:MyClassName 或 MyInterfaceName

枚举(Enum):
    同类和接口的命名规则,例如:ColorType

方法(Method):
    小写字母开头的驼峰式命名,动词开头,例如:methodName 或 doSomething

变量(Field):
    小写字母开头的驼峰式命名,如果是实例变量,首字母小写,例如:instanceVariable
    如果是常量(final static),则全大写,单词间用下划线分隔,例如:public static final int MAX_VALUE

常量(Constant):
    全部大写字母,单词间用下划线分隔,例如:MY_CONSTANT

参数(Parameter):
    同变量命名规则,小写字母开头的驼峰式命名,例如:parameterName

局部变量(Local Variable):
    同变量命名规则,但可以更简洁,只要保持可读性即可

布尔变量(Boolean Variables):
    避免使用简单的is或has作为布尔变量名,例如:isActive而不是isactive

java调试与反编译

内存查询工具可以使用 终端jps==>jhsdb hsdb

终端 javap进行反编译

  • java文件 + $ + 1.class
new Animal(){
   //匿名类,继承animal方法
            @Override
            public void eat() {
   
                System.out.println("吃东西");
            }
        };

new Animal(){
   //匿名类,继承animal方法
            @Override
            public void eat() {
   
                System.out.println("匿名类调用吃东西");
            }
        }.eat();//新建类并调用重写的方法


Android的开发就有这个应用场景,当我要按一个按钮时会有一个设置监听器的方法来控制交互,里面需要转递一个对象,这里就可以用匿名累,不用额外再创建一个类了,大大简化了开发过程以及提升了开发效率

    method(
                new Animal(){
   
                    @Override
                    public void eat() {
   
                        System.out.println("狗吃东西");
                    }
                }
        );//这样单次调用就不用新建一个新类,大大简化了开发过程以及提升了开发效率

常用API(现成的java类)

Math(Math.方法)

  1. abs(int)
  2. ceil(double)向上取整 floor(double)向下取整
  3. round(float)四舍五入
  4. random() [0.0,1.0)

abs(int) ceil(double) floor(double) round(float)

System

  1. exit(int status)当status==0时正常停止,非零异常停止

  2. arraycopy(ArrayList a,index,arr,index,count)

     //把arr1数组中的数据拷贝到arr2中
     //参数一:数据源,要拷贝的数据从哪个数组而来
     /参数二:从数据源数组中的第几个索引开始拷贝
     //参数三:目的地,我要把数据拷贝到哪个数组中
     //参数四:目的地数组的索引。
     //参数五:拷贝的个数
     //System.arraycopy(arr1,0,arr2,0,5);
    
  1. currentTimeMillis()时间戳 可用于加密和计算程序运行时间

     long start = System.currentTimeMillis();
             long end = System.currentTimeMillis();
             long lastTime = end - start;
             System.out.println(lastTime);//用来计算程序运行时间
    

Runtime

public static Runtime getRuntime()
当前系统的运行环境对象
public void exit(int status)0
停止虚拟机
public int availableProcessors()
获得cPU的线程数Runtime.getRuntime().availableProcessors() 20线程
public long maxMemory()
JVM能从系统中获取总内存大小(单位byte)  Runtime.getRuntime().maxMemory()/1024/1024 = 4064 也就是最大内存为4G
public long totalMemory()
JVM已经从系统中获取总内存大小(单位byte)  Runtime.getRuntime().totalMemory()/1024/1024
public long freeMemory()
JVM剩余内存大小(单位byte)
public Process exec(string command)
运行cmd命令

Object

  1. toString()

  2. equals(Object obj)每个类型都有相应的方法,比较的规则不同

     如果没有重写equals方法,默认使用object中的方法比较地址值
     重写之后比较对象内部属性值
         Ctrl+insert
    
  1. clone(int a)

     克隆只能被本类和子类使用,使用时必须重写
     @Override
     protected object clone(){
     //调用父类中的c1one方法
     //相当于让Java帮我们克隆一个对象,并把克隆之后的对象返回出去。
     return super.clone();
     }
    
     public class User implement Cloneable//可被克隆
     clone返回object需要进行强转
     int data=10;
     User u1 =new User(1,sun,pwd,path,data);
     User u2 = (User)u1.clone();
    
     对象克隆分为浅克隆和深克隆
         浅克隆:拷贝地址,不管是什么数据类型都完全拷贝过来,改变其中一个的数据,另外一个也会改变(地址)
         深克隆:基本数据类型拷贝过来,字符串复用,引用数据类型重新创建新的(可以重写克隆方法实现深克隆,或者是用第三方包方法进行深克隆)
     object中的克隆是浅克隆
    
     boolean result = Objects.equals(s1,s2);
    

BigInteger BigDecimal

==对象一但创建就不能发生改变==

BigInteger原则上可以表示无穷大的整数
BigInteger(int num,Random rnd);取随机大的整数[0~2^num-1]
BigInteger(String val);字符串中必须为整数
BigInteger(String val,int radix);获取指定进制的大整数(比如[22,2]==>其中22是二进制数)

BigInteger b = BigInteger.valueOf(100);
valueOf(long)

BigInteger提前把内部常用数字-16~16创建好,如果多次获取不会重写创建新的

爬虫

import java.io.BufferedReader;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
URL url = new URL("http://xiaodi8.com");
URLConnection urlConnection = url.openConnection();
BufferedReader br = new BufferedReader(new java.io.InputStreamReader(urlConnection.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
    System.out.println(line);
}
br.close();

正则

String regex = "((?i)Java)(?=8|11|17)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("Java8,java,jaVa4");
while (matcher.find()) {
    System.out.println(matcher.group());//==>Java,jaVa
}
//?:获取所有  ?=获取前面部分 ?!正则 获取不是指定内容的前面部分

//[[0-9]10|11|12]==>0~12
//+,*为贪婪爬取,可能多的匹配
//+?,*?为非贪婪爬取,尽可能少的爬取
//Java中默认贪婪爬取
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/
  (.+).\\1 ==> 其中\\1表示第一组,以第一个(为第一组,((.)\\2*)这里的二指的是(.)


String result = str.replaceAll("(.)\\1+","$1");//去重
//(.)表示把第一个重复的字符看成一组
//\\1 表示第一组再次出现
//+ 表示至少一次
//$1 表示把正则表达式中的第一组拿来用
//正则内用\\1正则外用$1

日期

//1.解析成一个date对象
String str1 = "2021-01-01";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf1.parse(str1);
//2.格式化
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日");
String str2 = sdf2.format(date1);
System.out.println(str2)

lambda表达式

使用lambda的对象必须是函数接口类型(即一个接口只有一个方法)

Collections ( 集合API )

  1. boolean addAll(Collectionc,T...elements)
  2. void shuffle (List<?> list) 打乱顺序
ArrayList<String>list =new ArrayList<>();
        Collections.addAll(list,"adc","adf","afd","dfasdf","326");
        System.out.println(list);
        Collections.shuffle(list);
        System.out.println(list);
目录
相关文章
|
19天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
174 37
|
19天前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑】设计模式——原型模式
对比原型模式和传统方式的实现思路、代码方案、优缺点,阐述原型模式的使用场景,以及深拷贝、浅拷贝等相关概念,并扩展原型模式在Spring源码中的应用。
【Java笔记+踩坑】设计模式——原型模式
|
6天前
|
JSON Java Maven
关于使用Java-JWT的笔记
这篇文章介绍了使用Java-JWT库来生成和验证JSON Web Tokens (JWT) 的方法。文中解释了JWT的组成,包括头部、载荷和签名,并提供了如何使用java-jwt库生成和验证token的示例代码。此外,还提供了Maven依赖和一些关于token的标准声明和自定义声明的解释。
关于使用Java-JWT的笔记
|
20天前
|
Java 开发者 数据格式
【Java笔记+踩坑】SpringBoot基础4——原理篇
bean的8种加载方式,自动配置原理、自定义starter开发、SpringBoot程序启动流程解析
【Java笔记+踩坑】SpringBoot基础4——原理篇
消息中间件 缓存 监控
81 0
|
20天前
|
运维 Java 关系型数据库
【Java笔记+踩坑】SpringBoot基础2——运维实用
SpringBoot程序的打包与运行、临时配置、多环境配置、日志
【Java笔记+踩坑】SpringBoot基础2——运维实用
|
20天前
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
20天前
|
SQL Java 数据库连接
【Java笔记+踩坑】MyBatisPlus基础
MyBatisPlus简介、标准数据层开发CRUD、业务层继承IService、ServiceImpl、条件查询、LambdaQueryWrapper、id生成策略、逻辑删除、乐观锁@Version、代码生成器、ActiveRecord
【Java笔记+踩坑】MyBatisPlus基础
|
20天前
|
前端开发 Java 数据库连接
【Java笔记+踩坑】SpringBoot——基础
springboot三种配置文件及其优先级、多环境配置、springboot整合junit,mybatis、ssmp综合图书案例
【Java笔记+踩坑】SpringBoot——基础
|
20天前
|
Java 数据库连接 Maven
【Java笔记+踩坑】Maven高级
分模块开发、依赖传递与冲突问题、 可选依赖和排除依赖、聚合和继承、属性、多环境配置与应用、私服安装和使用
【Java笔记+踩坑】Maven高级
下一篇
无影云桌面