string类

Java 对象和类

怎甘沉沦 提交于 2019-12-06 02:22:16
Java 对象和类 Java作为一种面向对象语言。支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 消息解析 本节我们重点研究对象和类的概念。 对象 :对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 类 :类是一个模板,它描述一类对象的行为和状态。 Java中的对象 现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。 拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。 对比现实对象和软件对象,它们之间十分相似。 软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。 在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。 Java中的类 类可以看成是创建Java对象的模板。 通过下面一个简单的类来理解下Java中类的定义: package codingdict.com; public class Dog { // 血统 String breed; // 年龄 int age; // 颜色 String color; // 吠叫 void barking() { } // 饿了 void hungry() { } // 睡觉 void sleeping() { } }

Java之ArrayList类(集合)

血红的双手。 提交于 2019-12-06 02:03:59
集合的由来 我们想存储多个数据,选择的容器可以是数组。而数组的长度是固定的,无法适应数据变化的需求。为了解决这个问题,Java提供了另一个容器 java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对象数据。 数组的长度不可以发生改变。但是ArrayList集合的长度是可以随意变化的。 ArrayList类概述 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长。对于ArrayList来说,有一个尖括号<E>代表泛型。泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。 注意 :泛型只能是引用类型,不能是基本类型。 ArrayList使用步骤 查看类 java.util.ArrayList <E> :该类需要 import导入使后使用。<E> ,表示一种指定的数据类型,叫做泛型。 E ,取自Element(元素)的首字母。在出现 E 的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。 查看构造方法 public ArrayList() :构造一个内容为空的集合。 基本格式: //创建一个泛型为String的ArrayList集合 ArrayList<String> arrayList = new

JAVA8新特性-Optional类解决NPE问题

醉酒当歌 提交于 2019-12-05 15:43:00
** JAVA8新特性-Optional类解决NPE问题** **github 详细参考 :**https://github.com/java-open/jdk1.8- API介绍 1、Optional(T value), empty(), of(T value), ofNullable(T value) of(T value), --通过of(T value)函数所构造出的Optional对象,当Value值为空时,依然会报NullPointerException。 --通过of(T value)函数所构造出的Optional对象,当Value值不为空时,能正常构造Optional对象。 ofNullable(T value) 当value值为null时,of(T value)会报NullPointerException异常;ofNullable(T value)不会throw Exception,ofNullable(T value)直接返回一个EMPTY对象 orElse和orElseGet 相当于value值为null时,给予一个默认值:当user值不为null时,orElse函数依然会执行createUser()方法,而orElseGet函数并不会执行createUser()方法 public User createUser(){ User user = new User

Java基础__Java中集合类

浪子不回头ぞ 提交于 2019-12-05 14:21:21
  ArrayList:有序、可重复、线程不安全、内部使用数组进行存储   LinkedList:有序、可重复、线程不安全、内部使用引用进行存储【可以很方便的进行插入、删除数据】   Vector:有序、可重复、线程安全   HastSet:无序、不可重复(自动去重)      TreeSet存放数据是有序的     HashSet存放数据是无序的 一、ArrayList集合类的简单创建和使用   创建一个集合对象   ArrayList arr = new ArrayList();   往集合中添加数据【arr.add(Object)】 arr.add("小明");   通过索引从集合中取得对象【arr.get(Index)】   arr.get(1) package com.Gary.arryaylist; import java.util.ArrayList; public class ArrayListDemo { public static void main(String[] args){ //集合对象 ArrayList arr = new ArrayList(); //往集合中添加对象 arr.add("小明"); arr.add("小红"); arr.add("小梁"); //使用索引添加对象 System.out.println(arr.get(0)); } }

全局变量定义类Constants

℡╲_俬逩灬. 提交于 2019-12-05 14:01:04
1.static + finall定义全局变量 package com.kexin.common.util; public class Constants { /** * shiro采用加密算法 */ public static final String HASH_ALGORITHM = "SHA-1"; /** * 生成Hash值的迭代次数 */ public static final int HASH_INTERATIONS = 1024; /** * 生成盐的长度 */ public static final int SALT_SIZE = 8; /** * 验证码 */ public static final String VALIDATE_CODE = "validateCode"; /** *系统用户默认密码 */ public static final String DEFAULT_PASSWORD = "123456"; } 2.调用 Constants.全局变量名 来源: https://www.cnblogs.com/cbpm-wuhq/p/11926529.html

深入理解枚举类

谁都会走 提交于 2019-12-05 09:36:11
深入理解枚举 ​ 最近刚学习完JVM相关知识,想到枚举既然这么异类,那就从字节码角度来分析一下它。有关枚举的讲解,很多博客已经很详细了,这里我们就从字节码的角度重新来认识一下它。 ​ 枚举类是一种特殊的类,它可以有自己的成员变量,方法,可以实现一个或多个接口,也可也定义自己的构造器。 1. 枚举类的继承结构: 2. 枚举类和普通类的区别: (1)枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类,因此枚举不能够显示继承其他父类(单继承局限性,但是可以实现接口)。其中“java.lang.Enum”实现了“Comparable”和“Serializable”接口。 (2)使用enum定义,非抽象的枚举类默认会使用final修饰,因此枚举类不能够派生子类。 (3)枚举类的构造器只能够使用private访问控制符,如果省略了构造器的访问控制符,则默认使用private修饰;如果强制指定访问控制符,则只能指定private修饰符。 (4)枚举类的所有实例必须要在枚举类的第一行显示列出,否则这个枚举类永远都能产生实例。列出这些实时,系统会自动添加public static final修饰符,无需程序员显示添加。 (5)枚举类默认提供了一个values方法,返回枚举实例数组,该方法可以很方便的遍历所有的枚举值。

类加载器 - ClassLoader详解

▼魔方 西西 提交于 2019-12-05 07:28:02
获得ClassLoader的途径 获得当前类的ClassLoader clazz.getClassLoader() 获得当前线程上下文的ClassLoader Thread.currentThread().getContextClassLoader(); 获得系统的ClassLoader ClassLoader.getSystemClassLoader() 获得调用者的ClassLoader DriverManager.getCallerClassLoader ClassLoader源码解析 概述 类加载器是用于加载类的对象,ClassLoader是一个抽象类。如果我们给定了一个类的 二进制名称 ,类加载器应尝试去定位或生成构成定义类的数据。一种典型的策略是将给定的二进制名称转换为文件名,然后去文件系统中读取这个文件名所对应的class文件。 每个Class对象都会包含一个定义它的ClassLoader的一个引用。 数组类的Class对象,不是由类加载器去创建的,而是在Java运行期JVM根据需要自动创建的。对于数组类的类加载器来说,是通过 Class.getClassLoader() 返回的,与数组当中元素类型的类加载器是一样的;如果数组当中的元素类型是一个原生类型,数组类是没有类加载器的【代码一】。 应用实现了ClassLoader的子类是为了扩展JVM动态加载类的方式。

类注解、方法注解

ⅰ亾dé卋堺 提交于 2019-12-05 04:54:00
定义注解类: @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface SignCheck { RequiredType required() default RequiredType.FORCE; } 定义拦截器: public class ApiSignInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { SignCheck signCheck = InterceptorUtils.getAnnotaion(handler, SignCheck.class); if (signCheck == null) { return true; } else { return signCheck(request, response); } } private boolean signCheck(HttpServletRequest request,

类加载器是怎么加载包下的类呢?

穿精又带淫゛_ 提交于 2019-12-05 02:34:11
《深入理解Java虚拟机》中有提到,只有在同一个类加载器加载出来的类,才具有类之间比较的价值。所以本文用一个简单的累加器例子来了解类加载器是怎么加载类。 在此,分为三个部分,A:获取类加载器;B:加载类;C 获取指定包下的所有类。 public class ClassUtil { private static final Logger LOGGER = LoggerFactory.getLogger(ClassUtil.class); /** * 获取类加载器 * @return */ public static ClassLoader getClassLoader() { //A } /** * 加载类 * @param className * @param isInitialized * @return */ public static Class<?> loadClass(String className, boolean isInitialized){ //B } /** * 获取指定包名下的所有类 * @param packageName * @return */ public static Set<Class<?>> getClassSet(String packageName){ //C }} 先有鸡才有蛋,所以在加载类之前,得先有类加载器。类加载器可以用JDK自带的

C++类的定义和对象

时光总嘲笑我的痴心妄想 提交于 2019-12-05 01:51:46
C++类的定义和对象 类的成员变量称为类的属性(Property),将类的成员函数称为类的方法(Method)。在面向对象的编程语言中,经常把函数(Function)称为方法(Method)。 类的定义 class Student{ public: //成员变量 char *name; int age; float score; void say(){ cout<<name<<age<<score<<endl; } }; 类只是一个模板(Template),编译后不占用内存空间. class C++ 中新增的关键字,用来定义类。 成员变量和成员函数,它们统称为类的成员(Member) 创建对象: Student Lilei; //创建对象 Student 是类名, liLei 是对象名。和使用基本类型定义变量的形式类似, 从这个角度考虑,我们可以把 Student 看做一种新的数据类型,把 liLei 看做一个变量。 在创建对象时,class 关键字可要可不要 class Student LiLei; //正确 Student LiLei; //同样正确 还可以创建对象数组: Student allStu[100]; 使用对象指针: Student stu; //pStu 是一个指针,它指向 Student 类型的数据,通过 Student 创建出来的对象 Student