Java---杂记
1.
当System.out.println()方法的参数是Object类型时,println()方法会自动调用Object对象的toString()方法,然后显示toString()方法返回的字符串。
2.
若Java程序中有多处出现字符串常量"Hello",则Java编译程序只创建一个String对象,所有的字符串常量"Hello"将使用同一个String对象,例如下面的语句:
String s1="Hello";
String s2=" Hello";
String s3=new String("Hello");
String s4=new String("Hello");
则:s1与s2是同一个对象,而s1、s3与s4是三个不同的对象,尽管它们所表示的字符序列相等。
3.
String类的对象都是线程安全的。StringBuffer代表线程安全的可变字符序列。
String类重写了从Object类所继承的equals()方法,而StringBuffer类没有重写该方法。
StringBuffer或StringBuilder是不能比较大小的。
4.
所有的包装类都是final类型,因此不能创建它们的子类。
包装类是不可变类,所有包装类的对象都是线程安全的。
包装类的层次结构
5.
Math类有两个静态常量:E(自然对数)和PI(圆周率)。
Math类是final类型的,因此不能派生子类。
Math类的构造方法是private类型的,因此Math类不能够被实例化。
6. 正则表达式
(eg1)重复字符压缩:将字符串中连续重复的字符压缩成一个。
例如, “aaabbbcccddd11122++***…33”压缩成“abcd12+*.3”。
相关代码是:设String s =””;则:String rs = s.replaceAll(“(.)(\\1)*”,”$1”);
说明:(.)表示一号组,匹配任何一个字符,\1表示与一号组相同的字符,$1表示在replaceAll()方法中,与一号组相匹配的那个子串。
(eg2)由0~9组成有不重复的7个数字组成的数字串。正则式是:((\d)(?!.*\2.*)){7}
7.
数组复制:System.arraycopy(arr1, start1, arr2, start2, len);
排序:Arrays.sort(a);
Arrays.binarySearch(array, key) 若找到,则返回其index(>=0),若找不到,则返回负数(<0),该负值含义是: -(插入点位置) -1 。再减去1是为了保证:找不到必须返回负数。
向TreeSet容器中加入同类型的对象,要求这些对象的类必须实现Comparable接口。
8.
LinkedList在内部是采用双向循环链表实现的,插入与删除元素的速度较快,随机访问速度则较慢。
LinkedList也是线程不安全的
9.
HashMap是基于HashCode的,若想正确使用HashMap,则需重写hashCode()和equals()方法。HashMap不是线程安全的,若要线程安全,可用:Map m = Collections.synchronizedMap(new HashMap());
10.
redirect:请求重定向:客户端行为,本质上为2次请求,地址栏改变,前一次请求对象消失。举例:你去银行办事(forward.jsp),结果告诉你少带了东西,你得先去***局办(index.html)临时身份证,这时你就会走出银行,自己前往***局,地址栏变为index.html.
forward:请求转发:服务器行为,地址栏不变。举例:你把钱包落在出租车上,你去警察局(forward.jsp)报案,警察局说钱包落在某某公司的出租车上(index.html),这时你不用亲自去找某某公司的出租车,警察局让出租车自己给你送来,你只要在警察局等就行。所以地址栏不变,依然为forward.jsp
创建一个以JDBC连接数据库的程序,包含
7
个步骤:
(1)加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),这通过java.lang.Class类的静态方法forName(String className)实现。
(2)提供JDBC连接的URL: 连接URL定义了连接数据库时的协议、子协议、数据源标识。
(3)创建数据库的连接:要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。
(4)创建一个Statement要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3种类型:
<1>执行静态SQL语句。通常通过Statement实例实现。
<2>执行动态SQL语句。通常通过PreparedStatement实例实现。
<3>执行数据库存储过程。通常通过CallableStatement实例实现。
(5)、执行SQL语句: Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute
(6)、处理结果:两种情况
<1>执行更新返回的是本次操作影响到的记录数。
<2>执行查询返回的结果是一个ResultSet对象。
(7)关闭JDBC对象:操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声 明顺序相反:<1>关闭记录集 <2>关闭声明
12.
JVM内存配置参数: “-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3”
-Xms -Xmx:分别设置堆的最小值和最大值,如果要设置成堆的大小可变,那么可以将最大值和最小值设置成不一样,如果要将堆大小固定,那么只需将最大和最小值设置成一样的就行。
jvm中分为堆和方法区、 堆又进一步分为新生代和老年代、方法区为永久代
堆中区分的新生代和老年代是为了垃圾回收,新生代中的对象存活期一般不长,而老年代中的对象存活期较长,所以当垃圾回收器回收内存时,新生代中垃圾回收效果较好,会回收大量的内存,而老年代中回收效果较差,内存回收不会太多。
基于以上特性,新生代中一般采用复制算法,因为存活下来的对象是少数,所需要复制的对象少,而老年代对象存活多,不适合采用复制算法,一般是标记整理和标记清除算法。
因为复制算法需要留出一块单独的内存空间来以备垃圾回收时复制对象使用,所以将新生代分为eden区和两个survivor区,每次使用eden和一个survivor区,另一个survivor作为备用的对象复制内存区。
综上:
-Xmn设置了新生代的大小为5120m,而-XXSurvivorRatio=3,所有将新生代共分成5分,eden占三份,survivor占两份,每份1/5
13.
运算符参数传递
与运算符&:保持不变的位,要用 1 去进行&运算;要清零的位用 0 进行&运算
或运算符|:保持不变的位,要用 0 去进行|运算;要置一的位用1进行|运算
异或运算符^:相同是0,不同是1.
保留符号位的右移运算符>>: 向右移一位相当于整除2
14. 参数传递
在方法调用运行时,首先对实在参数列表从左到右依次计算各个实在参数的值,然后在运行栈中为该方法的所有的形式参数变量分配空间,接着再为该方法体中所有其他局部变量在运行栈中分配空间,最后将已计算出来的各个实在参数的值抄送到相应的形式参数变量空间之中。这一切做完后,方法调用才开始执行方法体中的第一条语句。一旦运行完成,自动从运行栈撤消该方法的所有信息,因而该方法在运行栈中为形式参数及局部变量分配的空间也就自动撤消。
15. 命名规范
(1) 类名和接口名:首字母大写,如果类名由几个单词组成,采用陀峰标识,即每个单词的首字母大写,其余字母小写,例如,HelloWorld。
(2) 方法名和变量名:首字母小写(构造方法除外),如果方法名或变量名由几个单词组成,那么除第一个单词外,其余每一个单词的首字母大写,其他字母小写,例如,toString()。
(3) 包名:采用小写形式,例如,org.innerclasses.anonymous。
(4) 常量名:采用大写形式,如果常量名由几个单词组成,单词之间以下划线“_”隔开,例如,final int VALUE_ONE = 9。
16.
在类的static方法中,是不能使用this的。这是因为类方法是一直存在,随时可用的,而此时可能该类一个对象都没有创建,自然this也就不存在。
Java---杂记的更多相关文章
- java杂记——数组拷贝
这里介绍两种java提供的数组拷贝方法: (1)Arrays提供的copyOf(T src, T desLength)和copyOfRange(T src, int from, int to) (2) ...
- Java杂记9—NIO
前言 非阻塞IO,也被称之为新IO,它重新定义了一些概念. 缓冲buffer 通道 channel 通道选择器 BIO 阻塞IO,几乎所有的java程序员都会的字节流,字符流,输入流,输出流等分类就是 ...
- JAVA杂记
写在前面:期末考试要来了,对于一个暑假自学了几天JAVA之后一个学期划水的人来说现在就是踏上了JAVA预习之路.下面是自己xjb记的东西,主要是根据老师给的流程图总结的自己认为需要的一些零碎的小知识, ...
- 【Java杂记】Equals 和 hashCode
equals 和 hashCode含义 equal:判断两个对象是否相等,如果相同,返回true 否则返回false hashcode: 返回一个int数 Object 默认(内部地址转化为一个数字) ...
- Java 数据持久化系列之 HikariCP (一)
在上一篇<Java 数据持久化系列之池化技术>中,我们了解了池化技术,并使用 Apache-common-Pool2 实现了一个简单连接池,实验对比了它和 HikariCP.Druid 等 ...
- Linux环境下如何计算CPU占用率【华为云技术分享】
1.Linux 环境下查看 CPU 信息 1.1.查看 CPU 详细信息 通过 cat /proc/cpuinfo 命令,可以查看 CPU 相关的信息: [root@rh ~]$ cat /proc/ ...
- Java-每日学习笔记(数据库与idea技巧)
Java杂记-2020.07.28 简单记录下今天项目用到的东西还有技术公众号学到的一些知识点 Java事务 idea编码技巧 数据库快速插入100万条数据 Java实现sql回滚 Java事务 事务 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 有关Java的日期处理的一些杂记
在企业应用开发中,经常会遇到日期的相关处理,说实话JDK自带的日期方法很难用.就我个人而言我一般都会采用joda-time来替代JDK自身的日期. 这篇文章是杂记,所以写的比较零散,希望大家不要见怪. ...
- java基础(杂记)
java基础夯实(杂记):1:创建实例对象可以通过无参的构造函数然后调用成员变量去初始化属性,也可以自己定义有参构造方法直接初始化属性,当属性为private时我们可以通过getset方法间接访问:2 ...
随机推荐
- ChatTTS,语气韵律媲美真人的开源TTS模型,文字转语音界的新魁首,对标微软Azure-tts
前两天 2noise 团队开源了ChatTTS项目,并且释出了相关的音色模型权重,效果确实非常惊艳,让人一听难忘,即使摆在微软的商业级项目Azure-tts面前,也是毫不逊色的. ChatTTS是专门 ...
- DS Record
八云蓝自动机 Ⅰ 首先我们对于操作 \(1\) 转换,我们给 \(k\) 单独再开一个点 \(a_c\),这样我们就可以把操作 \(1\) 转换成操作 \(2\) 了. 对于区间问题,我们考虑使用莫队 ...
- C#.NET 国密SM4加密解密 CBC ECB 2种模式
注意点: 1.加密时,明文转 byte[] 时,不要用 Encoding.Default,一定要指定编码,如:UTF-8. 解密时,解出的 byte[] 转 string 同样要指定相同的编码. 2. ...
- Mybatis中#{}和${}的区别:
简单来说 #{} 会在将参数加上引号,例如: SELECT * FROM user WHERE username=#{username} ; 带上参数后的SQL语句即: SELECT * ...
- JsonPath - 根据表达式路径解析Json
JsonPath 在xml的使用过程中,对于xml的解析我们知道可以使用xpath的方式,随意的获取到我们想要的属性值.那么在使用json时,我们能不能实现同样的操作呢? 答案就是 json-path ...
- mongodb QuickStart Demo
import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.cl ...
- postman Could not get any response 无法请求
外网访问接口地址,刚开始考虑到是阿里云服务器上面的ECS网络安全策略拦截,添加了白名单, 首先在浏览器中回车访问,页面有反应. 但是在postman中请求,仍然返回 Could not get any ...
- 快速上手Python编程
前言 .center { width: auto; display: table; margin-left: auto; margin-right: auto } 类型 原理 优点 缺点 编译型语言 ...
- Kotlin 数据类型详解:数字、字符、布尔值与类型转换指南
Kotlin 数据类型 在 Kotlin 中,变量的类型由其值决定: 示例 val myNum = 5 // Int val myDoubleNum = 5.99 // Double val myLe ...
- Ubuntu 18.04安装xdrp以使用远程桌面
背景 开发环境有一台服务器默认没有屏幕(被我拿走用来拓展屏幕了),有时候需要使用到界面但嫌弃拆显示器太麻烦,因此使用远程桌面来解决这个需求. 做法 安装xrdp sudo apt install -y ...