`
jingwuyuan
  • 浏览: 8833 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java核心技术基础知识个人总结之——基本程序设计结构

阅读更多
开始好好学习JAVA的基础知识,也开始每天写一些自己的总结,在这发贴也是想勉励自己,过一段时间会开始把JAVASCRIPT的学习心得发上来。


一、基本数据类型:分为整型(4),浮点型(2),字符型,布尔型,一共8种
1.整型需要注意的:JAVA整型的范围与运行JAVA代码的机器无关的,所以很难发生整数溢出的情况,原理是JAVA的每一种数据类型的取值范围都是规定了的,不能改动。byte占1个字节,范围是-128到127;short占2个字节,范围是3W左右;int占4个字节,范围在20亿左右;long占8个字节,需要注意的是有个后缀L。JAVA没有无符号类型。
2.浮点类型:float占4个字节,后缀为F;double占8个字节;JAVA浮点型是二进制系统表示的,所以无法精确表示1/10,所以不适用于要求不能舍入误差的高精度计算系统中,如金融系统。Double类有3个常量:Double.POSITIVE_INFINITY表示无限大,Double.NEGATIVE_INFINITY表示无限小,Double.NaN表示不是一个数字,但是JAVA所有非数值都认为是不同的,所以比较NaN时要用方法:Double.isNaN(Object o); 
3.字符型:在JAVA中用UTF-16编码描述一个代码单元的。代码点是指可用于编码字符集的数字,UTF-32:用4个字节既32位表示代码点,消耗资源过大;UTF-8:使用一至四个字节的序列对编码 Unicode 代码点进行编码,很好的节约资源,用于AJAX返回的XML很好。UTF-16:使用一个或两个未分配的 16 位代码单元的序列对 Unicode 代码点进行编码;\u表示字符转义号,还可以用于“”和‘’外。
4.布尔型:boolean:false和true,需要注意的是:java中不能非0值当true,0当false,不支持直接的转换。


二、变量:关键字final表示的是一个常量,一旦赋值后不能改变,习惯常量名用大写。


三、运算:浮点数被0除得到无穷大或NaN,而整型会产生异常;strictfp关键字可以用在域上,包括类,那么里面使用严格的浮点计算;
1.运算中的类型转换:如果两个数中有一个是double类型的,那么另一个也将转换为double类型;如果两个数中有一个是float类型的,那么另一个也将转换为float类型;如果两个数中有一个是long类型的,那么另一个也将转换为long类型;否则,两个操作数都将被转换为int类型.Math类提供了很多关于运算的静态方法
2.移位运算:<<左移操作,所有操作数向左移动,每移一位最右边用0补充;>>带符号位右移:连同符号位一起右移,每移一位最左边用符号位补充;>>>无符号右移:连同符号位一起右移,每移一位最左边用0补充。右边的参数需要进行模32位运算(long进行64位模运算)。注意1<<31得到的结果是负数:-2147483648,JAVA在32位下最高位为1其余为0的时候表示的并不是-0.而是32位下最小负整数:-2147483648


四、字符串:代码点—codePoint.
1.String常用API:
  char charAt(int index)返回指定位置的代码单元。
  int codePointAt(int index)返回从给定位置开始或结束的代码点。
  int offsetByCodePoints(int startIndex,int cpCount)返回从startIndex代码点开始,位移cpCount后的代码点索引。
  int codePointCount(int startIndex,int endInex)返回起始位置到结束位置之间代码点的数量。
  int compareTo(String other)如果字符串位于other之前,返回一个负数;如果字符串位于other之后,返回一个正数;如果相等,返回0。
  boolean startsWith(String startstr)如果字符串是以startstr开头,返回true。
  boolean endsWith(String endstr)如果字符串是以endstr结尾,返回true。
  boolean equals(Object other)2个对象相等,返回true。
  boolean equalsIgnoreCase(String other)2个字符串忽略大小写相等返回true。
  int indexOf(String str)||(String str,int fromIndex)||(int cp)||(int cp,int fromIndex)从fromIndex位置开始计算,返回字串或者代码点第一次出现的位置。
  int lastindexOF 同上,不过是返回字串最后一次出现的位置。
  int length()返回串长度,准确的说是返回代码单元数量。
  String substring(int begin)||(int begin,int end)截取字符串。
  String toLowerCase() ;String toUpperCase();分别是转小写,和转大写。
  String trim();删除原始字符串头部和尾部空格。
  String replace(String old,String new)用NEW去替换OLD,没有构造正则好用。
2.StringBuilder 常用API:和类StringBuffer的用法基本一样,只是StringBuffer支持多线程,效率稍微低。


五、输入输出:
1、Scanner类:可以用一个给定的输入流创建该对象,例如用标准输入流创建:
   Scanner s=new Scanner(System.in),也可以用一个File对象构造一个Scanner对象,如:
   Scanner s=new Scanner(new File(String FilePath));
   作为一个读取的类,Scanner主要有以下的方法:String nextLine();String next();Int nextInt();
   double nextDouble();
(java6 有Console类可以读取密码不可见:Console cons=System.console(); cons.readPassword(""))
   相应的有一些检测的hasNext方法;
2、PrintWriter类:可以用一个File对象构造一个PrintWriter对象:
   PrintWriter pw=new PrintWriter(new File(String FilePath));
   作为一个写出的类,PrintWriter主要的方法有:write(String str),print,println,printf等。


六、控制流程:do_while语句中do语句块里的局部变量在while的()已经没有生命周期!for语句中的()里的变量可以在{}语句块中使用。
switch语句的case标签必须是整数或者枚举类型常量,如果在case分支语句的末尾没有break语句,那么会接着执行下一个case分支语句。
带标签的break语句,标签必须放在希望跳出的最外层循环之前,紧跟一个冒号。
  

七、大数值:BigInteger和BigDecimal分别实现了任意长度的整形和任意长度的浮点型。都可以用valueOf(long/double)方法通过一个基本的类型去构造他们,他们的运算方法一样,如下:
add:加法;subtract:减法;multiply:乘法;divide:除法;mod:求余数;这两个类都实现了Comparable这个接口,于是有compareTo比较大小的方法。


八、数组:在java 6中的Arrays类有方法Object[] copyOf(Object oldArray[],int length)该静态方法将一个数组的值复制到一个新数组中,第2个参数指定新数组的长度,并返回新数组,如果新数组有多余元素,则数值型被赋值0,boolean型被赋值false。如果长度小于原始数组长度,只拷贝最前面的数据元素。以上的方法只有JDK6.0版本以上才有。
  System.arraycopy(from[],int fromIndex,to[],int toIndex,int conut)方法也是数组的拷贝,参数含义是从数组from的位置是fromIndex的元素开始拷贝总数为conut个元素到数组to从toIndex位置开始,该方法需要注意数组to必须有足够的空间存放拷贝的元素。
  Math.ronud是四舍五入,Math.random是返回一个0到1(不含0,不含1)的随即浮点数,用N乘以这个浮点数,就可以得到0到N-1之间的一个随即数。
数组可以使用for(:)这个循环,Arrays有很多静态的方法提供使用:
toString(type[]a):将数组转化为字符串
copyOf在6.0以后的版本才有,并且参数可以为3个(type[]a,int start,int end),start-end表示要拷贝的长度。
sort:快速排序算法的排序。
binarySearch(type[]a,type v)||(type []a,int start,int end,type v)用二分搜索法查找一个元素,成功返回下标值,否则返回一个负数r,-r-1是为保持A的有序应插入的位置,我大概估计了下,既然是2分搜索,那么这个数组里的元素应该是通过实现了Comparable这个接口排过序的,这个方法要比自己去循环查找要快很多,不过要进行一次sort方法,不知道会不会在整体上影响效率。
fill(type[],type v)将数组的所有元素的值设置为V。
equals(type[]a,type[]b)如果a,b大小相同,并且下标相同的元素也相等,返回true。
java实际上是没有多维数组的,只有数组的数组,这让java十分的灵活可以创造任意部规则的数组。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics