java琐碎
来源:互联网 发布:泉州师范软件学院 编辑:程序博客网 时间:2024/06/16 10:24
有时候看到java里的小知识点,当时看后明白,但是没有养成随手几下的习惯,结果就把知识点又给遗忘了,真是好记性不如烂笔头。索.性就把见到的小知识点慢慢积累起来吧,从现在开始!
1.理解抽象类与接口区别
接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。
类可以实现很多个接口,但是只能继承一个抽象类
类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
抽象类可以在不提供接口方法实现的情况下实现接口。
Java接口中声明的变量默认都是final的。抽象类可以包含非final的变量。
Java接口中的成员函数默认是public的。抽象类的成员函数可以是private,protected或者是public。
接口是绝对抽象的,不可以被实例化。抽象类也不可以被实例化,但是,如果它包含main方法的话是可以被调用的。
刚开始对于第四条没理解意思,那么下面的程序就是对这句话最好的理解。(即抽象类可以实现接口,但是却不用实现接口的方法,可以留给实现类来做这个事)
abstract class abstractClass implements Interface{public void function(){System.out.println("test");}}interface Interface{public void method();}public class test extends abstractClass{@Overridepublic void method() {System.out.println("实现接口方法");}public static void main(String[] args) {test t=new test();t.method();}}
floor 返回不大于的最大整数
round 则是4舍5入的计算,入的时候是到大于它的整数
round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。
ceil 返回不小于的最小整数
Math.floorMath.roundMath.ceil1.41121.51221.6122-1.4-2-1-1-1.5-2-1-1-1.6-2-2-1round方法源码:
public static long round(double a) {return (long)floor(a + 0.5d); }
Math.Round(3.44, 1) = 3.4Math.Round(3.45, 1) = 3.4Math.Round(3.46, 1) = 3.5-----------------------------------------------Math.Round(3.54, 1) = 3.5Math.Round(3.55, 1) = 3.6Math.Round(3.56, 1) = 3.6-----------------------------------------------Math.Round(3.64, 1) = 3.6Math.Round(3.65, 1) = 3.6Math.Round(3.66, 1) = 3.7-----------------------------------------------Math.Round(3.74, 1) = 3.7Math.Round(3.75, 1) = 3.8Math.Round(3.76, 1) = 3.8
那么果断打算测试,一看原来是C#的方法。(实习一直用C#)
测试了下在C#中Round方法有好多重载,这个方法在C#中遵循的规律是:
四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍 去,五前为奇要进一Console.WriteLine(Math.Round(3.44,1));//3.4 Console.WriteLine(Math.Round(3.45, 1));//3.4 Console.WriteLine(Math.Round(3.46, 1));//3.5 Console.WriteLine(Math.Round(3.54, 1));//3.5 Console.WriteLine(Math.Round(3.55, 1));//3.6 Console.WriteLine(Math.Round(3.56, 1));//3.6 Console.WriteLine(Math.Round(3.64, 1));//3.6 Console.WriteLine(Math.Round(3.65, 1));//3.6 Console.WriteLine(Math.Round(3.66, 1));//3.7 Console.WriteLine(Math.Round(3.74, 1));//3.7 Console.WriteLine(Math.Round(3.75, 1));//3.8 Console.WriteLine(Math.Round(3.76, 1));//3.8 Console.WriteLine(Math.Round(0.25, 1));//0.2 五后皆零看奇偶,五前为偶应舍 去 Console.WriteLine(Math.Round(0.35, 1));//0.4 五后皆零看奇偶,五前为奇要进一 Console.WriteLine(Math.Round(0.251, 1));//0.3 五后非零就进一
3.system.arraycopy与Arrays.copyOf()
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);src表示原数组
srcPos 表示要从原数组哪个位置开始复制
dest 表示目标数组
destPos 表示要复制到目标数组的哪个位置
length 表示要复制的元素个数
这是Arrays.copyOf的源代码
//非基本类型public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) { T[] copy = ((Object)newType == (Object)Object[].class) ? (T[]) new Object[newLength] : (T[]) Array.newInstance(newType.getComponentType(), newLength); System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; }//基本数据类型public static int[] copyOf(int[] original, int newLength) { int[] copy = new int[newLength]; System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; }
注意:在Arrays.copyOf这个方法里用到了system.arraycopy方法。这里返回的是一个新数组。
4.String中的toCharArray()方法。
//原来想用下面的代码得到这个字符数组,而且还想保留字符数组的容量,但是发现这样赋值后发现字符数组的容量变为了内容长度。char[] c=new char[100];String s="fefeff fff fff";c=s.toCharArray();查看下toCharArray()方法的源代码,发现方法中重新创建了一个字符数组,然后调用了一个getChars方法,此方法就是调用了上面的system.arraycopy方法将内容复制到字符数字组中,然后返回。
- java琐碎
- java琐碎
- 琐碎的java
- java学习琐碎记录
- Java的琐碎注意事项
- JAVA琐碎笔记
- java琐碎的知识
- java琐碎的知识点
- java琐碎知识点1
- java琐碎知识点410
- Java琐碎知识整理
- 琐碎
- 琐碎
- 琐碎
- 琐碎
- 琐碎
- 琐碎
- 琐碎
- 简单时间序列平滑法
- iOS开发多线程篇—NSOperation基本操作
- 5.1.10 Populating Next Right Pointers in Each Node II
- __try,__except,__finally,__leave异常模型机制
- BZOJ 2021 Usaco2010 Jan Cheese Towers 动态规划
- java琐碎
- Android.mk 加载cpp文件的快捷方法
- IOS代码注释小结
- 46.输入一个整数取出偶数位,并按照原来的顺序输出
- Android软件开发之发送短信与系统短信库解析
- 转载MTK通话背景音
- IOS8 使用CLLocationManager定位服务问题
- 有关IOC、依赖注入和AOP的简单解释
- iOS开发多线程篇—自定义NSOperation