java中遗留的小问题
一、类型转换
short s = 1; s = s + 1; //false,因为1是int类型,会损失精度
short s = 1; s += 1; //true,因为+=有自带强转
二、逻辑运算符
^逻辑异或:相同为false,不同为true
例如:情侣关系:男男、男女、女男、女女
三、参数传递
基本类型:形参的改变对实参没有影响
引用类型:形参的改变直接影响实参
四、成员变量和局部变量
成员变量:在类中方法外
局部变量:在类中方法内
五、多态
同一个引用指向多个对象,表现各个不同对象的方法。
父 f = new 子1();
父 f = new 子2();
父 f = new 子3();
六、抽象类:abstract
抽象类有构造方法,但是不能实例化;
成员方法既可以是抽象的(强制要求子类实现抽象方法,被abstract修饰的抽象方法无方法体(没有大括号{})),也可以是非抽象的(子类继承用,提高代码复用性)。
作用:用于子类访问父类数据的初始化。
抽象类不能使用private/final/static关键词
七、局部内部类访问局部变量
局部内部类访问局部变量必须用final修饰局部变量,使局部变量为常量来访问。
class Outer {
private int num = 10; public void method() {
//int num2 = 20;
final int num2 = 20;
class Inner {
public void show() {
System.out.println(num);
//从内部类中访问本地变量num2; 需要被声明为最终类型
System.out.println(num2);//20
}
}
Inner i = new Inner();
i.show();
}
}
八、TreeSet排序
1.自然排序:(元素比较)
让元素所属的类实现自然排序接口 java.lang.Comparable,必须重写compareTo方法。
2.比较器排序:(集合比较)
让集合的构造方法接收一个比较器接口的子类对象 java.util.Comparator。
内部类:
TreeSet<T> treeSet = new TreeSet<T>(new Comparator<T>()(
public int compare(T t1, T t2) {
int num = t1.getName().length() - t2.getName().length();
int num2 = num == 0 ? t1.getName().compareTo(t2.getName()) : num;
int num3 = num2 == 0 ? t1.getAge() - t2.getAge() : num2;
return num3;
}
));
九、Map遍历
A、根据键找值
//创建集合对象
Map<K,V> map = new HashMap<K,V>();
//获取所有的键(键的集合)
Set<K> set = map.keyset();
//遍历键的集合
for(K key : set) {
V value = map.get(key);
syso(key + "-" + value);
}
B、根据键值对对象找键和值
//创建集合对象
Map<T,V> map = new HashMap<T,V>();
//获取所有键值对对象的集合
Set<Map.Entry<K,V>> set = map.entrySet();
//遍历键值对对象的集合,得到每一个键值对对象
for(Map.Entry<K,V> me : set) {
K key = me.getKey();
V value = me.getValue();
Syso(key + "," + value);
}
十、contains()方法底层依赖的是equals()方法,所以判断对象包含另一对象,需先重写equals()方法。
十一、Arrays工具类:public static <T> List<T> asList(T... a):把数组转成集合
十二、new FileInputStream("") 和 class.getClassLoader().getResourceAsStream("")
前者根目录为项目根目录或者绝对路径,后者根目录为src目录
java中遗留的小问题的更多相关文章
- 。Java中的一些小细节
1.main方法. ------任何一个Java程序都有一个main方法,它是程序的入口. ------当执行 “ java + 类名 “ 这个命令时,JVM就会去加载这个类,并且寻找这个类中的m ...
- C#、Java中的一些小功能点总结(持续更新......)
前言:在项目中,有时候一些小的功能点,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小功能点,以备用,并持续更新...... 1.禁用DataGrid ...
- C#、Java中的一些小知识点总结(持续更新......)
前言:在项目中,有时候一些小的知识,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小知识点,以备用,并持续更新...... 1.禁用DataGridV ...
- java中方法传值小知识解析
1.java语言参数之间只有值传递,包括按值调用和按引用调用. 一个方法可以修改传递引用所对应的变量值,而不能修改传递值调用所对应的变量值. 按值调用:包括八大基本数据类型都是按值调用.传值的时候,也 ...
- java中的定时任务小示例
package package_1; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer; ...
- Java中如何判断当前环境是大端字节顺序还是小端字节顺序
Java非字节类型的基本类型,除了布尔型都是由组合在一起的几个字节组成的.这些数据类 型及其大小总结在表 2-1 中. 表:基本数据类型及其大小 数据类型 大小(以字节表示) Byte 1 Char ...
- java发布项目后注意小点,以及对于金额在java中的处理
项目在发布之后,有时会进行一些小的地方的修改,特别是对于一些常量的修改,如定义的一些特殊账户,第三方的key值,当修改的时候,我之前就偷懒过,因为项目在服务器上面,访问速度也受到限制,替换整个项目很麻 ...
- java中 try catch finally和return联合使用时,代码执行顺序的小细节
代码1测试 public static void main(String[] args) { aa(); } static int aa() { try { int a=4/0; } catch (E ...
- Java中splite的用法与小技巧
在java.lang包中也有String.split()方法,与.net的类似,都是返回是一个字符型数组,但使用过程中还有一些小技巧.如执行:"2|33|4".split(&quo ...
随机推荐
- 使用docker部署awx-1.7.1.0(ansible图形化界面)
文章目录 关于环境 下载awx 下载安装所需依赖 安装docker-compose 配置inventory文件 出现的报错 TASK [local_docker : Run migrations in ...
- NSSCTF-[UTCTF 2020]Zero
做misc嘛,先把题目一开始就给的一串英文翻译一下, 可以看到说明的是这个txt文档可能是包含其他的文本量,这个文本里面还有其他的东西,只是正常是看不到, 使用binwalk或者fomost分离尝试, ...
- 大数据BI系统搭建对企业经营的作用有哪些
随着数据化时代的到来,企业为了适应高速发展的业务.维持自身更好的发展,纷纷开始寻求适合自身企业发展的BI系统.为什么BI系统会受到企业如此的青睐?BI系统对企业经营究竟有哪些方面的作用呢? 下面,小编 ...
- 详解 c# 克隆
克隆方法是原型设计模式中必须使用的方式,它将返回一个与当前对象数据一致的对象.正如其名,犹如一个模子雕刻而出.克隆类型分为两种:浅克隆.深克隆. 浅复制就是仅复制类中的值类型成员 深复制就是复制类中的 ...
- C# 方法里面的默认参数
最近有很多地方都用到了方法的默认参数,遂总结之. (一)先从原理说起 在C#中,一旦为某个参数分配了一个默认值,编译器就会向内部该参数应用定制一个attribute 即是(OptionalAttrib ...
- 分布式系统下的CAP定理
本文参考EricBrewer博客加上自己的理解整理. CAP定理又被成为布鲁尔定理,是加州大学计算机科学家埃里克·布鲁尔提出来的猜想,后来被证明成为分布式计算领域公认的定理. CAP定义,在高并发的场 ...
- Qt:QTableWidget
0.说明 QTableWidget类提供了一个基于Item的Table视图,如下图: Table Widget提供了表格用于显示.Table中的每个Item都是QTableWidgetItem对象. ...
- WIN10:显示文件后缀.exe
- Vue之路由的使用
零.传统路由与SPA的区别 传统开发方式下,URL改变后,就会立刻发生请求去请求整个页面,这样可能请求加载的资源过多,可能会让页面出现白屏. 在SPA(Single Page Application) ...
- k8s-ingress部署测试以及深入理解
1.ingress 部署有两种方式.本次采用DaemonSet部署. apiVersion: v1 kind: Namespace metadata: name: ingress-nginx --- ...