个人java笔试笔记

一.例如牛客杨辉三角问题 

    (1)可以考虑找规律的方法解决

    (2)常规方法

    链接:https://www.nowcoder.com/questionTerminal/8ef655edf42d4e08b44be4d777edbf43

二.字符

    

Character 方法

下面是Character类的方法:

序号方法与描述
1isLetter()
是否是一个字母
2isDigit()
是否是一个数字字符
3isWhitespace()
是否是一个空格
4isUpperCase()
是否是大写字母
5isLowerCase()
是否是小写字母
6toUpperCase()
指定字母的大写形式
7toLowerCase()
指定字母的小写形式
8toString()
返回字符的字符串形式,字符串的长度仅为1

 

三.关于字符串

 

   (1)关于java正则表达式的匹配

      http://www.runoob.com/java/java-regular-expressions.html

String regexaA="[a-zA-Z]+";  
    Matcher aA=Pattern.compile(regexaA).matcher(input); 
    if(aA.matches())
    	z+=20;

   (2)字符串

           单引号引的数据 是char类型的
           双引号引的数据 是String类型的 

          String类适用于描述字符串事物。
         那么它就提供了多个方法对字符串进行操作。
 
         常用的方法如下:
 
 1、获取:
  1.1 字符串中包含的字符数,也就是字符串的长度。
  int length():获取长度。
  1.2 根据位置获取该位置上的某个字符。
  char charAt(int index):返回指定索引处的char值。
  1.3 根据字符获取该字符在字符串的位置。
  int indexOf(String str):返回的是str在字符串中第一次出现的位置。
  int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取ch在字符串中出现的位置。
  int lastIndexOf(int ch):反向索引一个字符出现的位置
 
 2、判断:
  2.1  字符串中是否包含某一个子串。
  boolean contains(str);
  特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1表示该str不在字符串中存在。
    所以,也可以用于对指定判断是否包含。
  if(str.indexOf("aa")!=-1)  
    而且该方法既可以判断,又可以获取出现的位置
  2.2 字符中是否有内容。
  boolean isEmpty():原理就是判断长度是否为0.
  2.3 字符串是否是以指定内容开头。
  boolean startsWith(str);
  2.4 字符串是否是以指定内容结尾。
  boolean endsWith(str);
  2.5判断字符串内容是否相同。复写Object类中的equals方法。
  boolean equals(str);
  2.6 判断内容是否相同,并忽略大小写
  boolean equalsIgnoreCase();
 
 3、转换
  3.1 将字符数组转换成字符串。
  构造函数: String(char[])
    String(char[],offset,count):将字符数组中的一部分转换成字符串。
  静态方法:
  static String copyValueOf(char[]);
  static String copyvalueOf(char[] data, int offset, int count);
  3.2 将字符串转换成字符数组(重点)。
  char[] toCharArray();
  3.3 将字节数组转换成字符串。
  String(byte[])
  String(byte[],offset,count):将字节数组中的一部分转换成字符串。
  3.4 将字符串转换成字节数组
  3.5 将基本数据类型转换成字符串。
  String valueOf(int);  //String ch=String.valueOf(Password.charAt(i));
  String valueOf(double);
 
  特殊:字符串和字节数组在转换过程中是可以指定编码表的。
 
 4、替换
  String replace(oldchar,newchar);
 5、切割
  String[] split(regex);
 6、子串            获取字符串中的一部分
  String substring(begin);
  String substring(begin,end);
 7、转换,去除空格,比较
  7.1 将字符串转成大写或者小写。
  String toUpperCase();
  String toLowerCase();
  7.2 将字符串两端的多个空格去除。
  String trim();

  7.3 将两个字符串进行自然顺序的比较。

参考https://blog.csdn.net/u012369373/article/details/49894551

排序 https://www.cnblogs.com/onepixel/articles/7674659.html

快排http://developer.51cto.com/art/201403/430986.htm

 

JVM的内存结构,JVM的算法
JVM内存结构主要有三大块:堆内存、方法区和栈,几乎所有的对象实例都存放在堆里,如果在堆中没有内存完成实例分配,并且堆也无法再扩展时,将会抛出OutOfMemoryError异常。
方法区用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,当方法区无法满足内存分配需求时,将抛出OutOfMemoryError异常。
每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。
每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。 
如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常。
 

2.1.1 单例(Singleton)
确保一个类只有一个实例,并提供一个全局的访问点。 
需要注意的是,多个类加载器下使用单例,会导致各类加载器下都有一个单例实例,因为每个类加载器都有自己独立的命名空间。 
JDK 中的单例有 Runtime.getRuntime()、NumberFormat.getInstance() 
下面总结了四种线程安全的 Java 实现方法。每种实现都可以用 Singleton.getInstance().method(); 调用。

2.1.1.1 饿汉方式
关键思路:作为类的静态全局变量,加载该类时实例化。 
缺点是真正使用该实例之前(也有可能一直没用到),就已经实例化,浪费资源。 
对于 Hotspot VM,如果没涉及到该类,实际上是首次调用 getInstance() 时才实例化。

 

public class Singleton {
    private static Singleton instance = new Singleton();

    private Singleton() {
    }

    // 基于 classLoader 机制,自动达到了线程安全的效果
    public static (synchronized) Singleton getInstance() {
        return instance;
    }

    public void method() {
        System.out.println("method() OK.");
    }
}
 

2.1.3 简单工厂(Simple Factory) ★
不是真正的“设计模式”。自身是工厂实现类,直接提供创建方法(可多个),可以是静态方法。JDK 中有 Boolean.valueOf(String)、Class.forName(String)。

/**
 * @author: kefeng.wang
 * @date: 2016-06-09 19:42
 **/

public class DPC3_SimpleFactoryPattern {
    private static class SimpleFactory {
        public CommonProduct createProduct(int type) { // 工厂方法,返回“产品”接口,形参可无
            if (type == 1) {
                return new CommonProductImplA(); // 产品具体类
            } else if (type == 2) {
                return new CommonProductImplB();
            } else if (type == 3) {
                return new CommonProductImplC();
            } else {
                return null;
            }
        }
    }

    private static class SimpleFactoryClient {
        private SimpleFactory factory = null;

        public SimpleFactoryClient(SimpleFactory factory) {
            this.factory = factory;
        }

        public final void run() {
            CommonProduct commonProduct1 = factory.createProduct(1);
            CommonProduct commonProduct2 = factory.createProduct(2);
            CommonProduct commonProduct3 = factory.createProduct(3);
            System.out.println(commonProduct1 + ", " + commonProduct2 + ", " + commonProduct3);
        }
    }

    public static void main(String[] args) {
        SimpleFactory factory = new SimpleFactory(); // 工厂实例
        new SimpleFactoryClient(factory).run(); // 传入客户类
    }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值