Java基础知识点

数据类型

Java源代码的文件名必须与公有类的名字相同,并用.java作为扩展名.
在Java中,一共有8种基本类型(primitive type):4种整型、2个浮点型、1个用于表示unicode编码的char和1个表示 真值的boolean类型. 注意,Java中没有任何unsigned类型.

JDK 5.0中可以用十六进制表示浮点数值,如0.125表示成0x1.0p-3.在十六进制表示法中,使用p表示指数.

三个特殊的浮点数值:正无穷大、负无穷大、NaN.
计算0/0,或者负数的平方根结果为NaN.

常量Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY和Double.NaN(与相应的Float类型的常量一样)分别表示 这三个特殊的值,但在实际应用中很少遇到.
注意,不能如下来检测一个特定值是否等于Double.NaN.
if(x==Double.NaN) //is never true

所有“非数值”的值都被认为是不相同的,但可以使用Double.isNaN()方法.
if(Double.isNaN(x)) //check whether x is "not a number"

变量名必须是一个以字母开头的字母或数字序列,并且不能是Java保留字.需要注意的是,与大多数程序设计语言相比 ,Java中“字母”和“数字”的范围要大,字母包括'A'-'Z'、'a'-'z'、‘_’和在某种语言中代表字母的任何 Unicode字符.

如果需要知道哪些Unicode字符属于Java中的“字母”,可以用Character类的isJavaIdentifierStart和 isJavaIdentifierPart方法进行检测.

 运算符

整数被0除将会产生一个异常,而浮点数被0除将会得到无穷大或NaN.

&&和||按照短路方式求值.

>>>运算符将用0填充前面的位,>>运算符用符号位填充左侧的位.没有<<<运算符.

对移位运算符右侧的参数需要进行模32的运算,若左边操作数是long类型,则对右侧操作数模64.如1<<35和1<<3相同.

 字符串

String类的substring方法可以从一个较大的字符串提取出一个字串,第一个参数为起始位置,第二个是不想复制的第 一个位置.substring的工作方式优点是容易计算字串的长度.字符串s.substring(a,b)的长度为b-a.
String类没有提供修改字符串的方法,是不可变的.若要修改字符串只能先提取需要的字符,然后再拼接上替换的字符 串.

一定不能使用==运算符检测两个字符串是否相等.

Java中的char类型尽量不用.

构造字符串的StringBuilder类,适用于单线程.多线程下可以用StringBuffer.两者API是相同的.

 输入输出

Scanner类接收从控制台的输入.
Scanner in = new Scaner(System.in);
String name = in.nextLine();
int age = in.nextInt();

因为输入是可见的,所以Scanner不适用于从控制台读取密码,Java SE 6特别引入了Console类来实现这个目的.

JDK 5.0沿用了C语言库函数中的printf方法.如System.out.printf("%8.2f",x);可以用8个字符的宽度和小数点后两位 的精度打印x.

大数值

如果基本的整数和浮点数精度不能满足需求,那么可以使用java.math包中的两个很有用的类:BigInteger和 BigDecimal.这两个类可以处理包含任意长度数字序列的数值.BigInteger实现了任意精度的整数运算,BigDecimal实 现了任意精度的浮点数运算.

使用大数类进行操作时,需要使用add、subtract、multiple、divede等方法.使用valueOf(x)返回一个值等于x的大数

数组

在Java中,允许数组的长度为0.在编写一个结果为数组的方法时,如果碰巧结果为空,那么这种语法形式就显得非常 有用.数组长度为0与null不同.

在Java中,允许将一个数组变量拷贝给另一个数组变量,这是两个变量将引用同一个数组.如果希望将一个数组的所有 值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法:
int[] copiedNumbers = Arrays.copyOf(numbers, numbers.length);
第2个参数是新数组的长度,这个方法通常用来增加数组的大小.

如果数组元素是数值型,那么多余的元素将被赋值为0,如果是布尔型则被赋值为false.相反,如果长度小于原始的长 度,则只拷贝最前面的数据元素.

在Java SE 6之前,用System.arraycopy方法来拷贝数组:
System.arraycopy(from, fromIndex, to, toIndex, count);
数组to必须有足够的空间存放拷贝的元素.

Java的命令行参数和C++不同,程序名并没有存储在args数组中.例如,使用java Message -h world运行时,args[0]是“-h”,而是“Message”或“java”.

可以使用Array类中的sort方法对数组进行排序,这个方法使用了优化的快速排序算法.

for each循环语句不能自动处理二维数组的每一个元素.它是按照行,即一维数组处理的,要想访问二维数组的所有元素,需要使用两个嵌套的循环.
for(double[] row : balances)
    for(double b : row)
        do something with b

Java实际上没有多维数组,只有一维数组.多维数组解释为“数组的数组”.因此Java可以创建不规则的数组,即数组的每一行有不同的长度.

要想创建一个不规则的数组,首先需要分配一个具有所含行数的数组.
int[][] odds = new int[NMAX + 1][];
接下来,分配这些行.
for(int n= 0; n <= NMAX; n++)
  odds[n] = new int[n+1]
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值