Java认知
java平台
JavaSE:标准版(Standard )。JavaSE包含构成Java语言核心的类。
JavaEE :企业版(Enterprise)。JavaEE是在JavaSE平台的基础上构建的,它包含用于开发企业级应用的类。
JavaME :微型版(Micro)。包含JavaSE平台中一部分类,用于嵌入式系统开发。
数值类型
四类八种:
整型:1,2,4,8 字节 对应位数:字节数*8 取值范围:|2|e的位数减一次方
浮点型:4,8 精度为7和17 取值范围: -3.403E38 ~ 3.403E38 ,-1.798E308 ~ 1.798E308
错题:short long float double int 几种数据类型的取值范围由小到大的排列顺序是:
正确答案:short int long float double
字符型:2字节 一个16位无符号整数,Java中字符类型的值是对应字符的编码, 是
unicode编码。
布尔数据类型:关键字boolean来表示,布尔型数据的值域只有两个值:true和false。
数据类型的默认值
对于数字类型,默认值为0,对于字符型,默认值为‘ ’(空格),对于布尔类型,默认值为false, 对于字符串类型(引用类型),默认值为null
数据类型转换
自动数据类型转换:小空间的数据类型可以自动转换成大空间的数据类型。
强制数据类型转换:也称之为显式类型转换,小空间的数据类型强制转换成大空间的数据类型。
- boolean型数据不能和其他基本数据类型进行转换;
- char型和int型数据可以互换;
- byte、short、char之间不会相互转换,它们三者在计算时首先会转换为int类型;
- 在强制类型转换过程中,源类型的值可能大于目标类型,因此可能造成精度降低或溢出
运算符
算术运算符
1.++n:现加后用 n++:先用后加
2.当操作数中只要有一个是String类型,“+”会自动将另一个操作数转换成字符串类型,然后进行连接。
逻辑运算符
1.逻辑非的优先级高于逻辑与的优先级高于逻辑或,非短路高于短路
2.双倍代表短路
三目运算符
1.语法:表达式1 ? 表达式2 : 表达式3 如果表达式1为真,取表达式2的值,否则取表达式3的值
优先级
算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符
流程控制语句
switch语句
1.判断条件的数据类型:byte、short、char、int,在JDK7中增加了对String类型
死循环
死循环举例:for(int i=1;;i++){} while(true){}
循环中的中断
break:跳出本个循环
continue:跳出本次循环
break table:语句可以出现在任何语句体中,其作用是结束指定语句的执行
数组
数组的特点
1. 数组里只能存储相同类型的数据;
2. 数组的长度一旦创建便不能改变;
3. 声明数组时,方括号“[]”既可以放在数据类型的后面,也可以放在数组名的后面;
4. 数组的下标从0开始。
5.开辟连续的存储空间。
6.数组属于引用数据类型,栈内存储数组地址,堆内存储数组内容
数组的创建
静态创建:在数组声明的同时就直接创建数组
动态创建:在数组声明的时确定数组长度,但是没有元素
数组的长度属性
1.数组可以看作一个专门用来存放元素的类,其中length是类的成员属性,不是方法。访问时不能带括号。
2.数组的长度必须>=0
3.length的类属性权限为只读,不能修改
数组常见异常
空指针异常:类名为java.lang.NullPointerException,没有创建而直接使用数组时会产生该异常
数组下标越界异常:类名是 java.lang.ArrayIndexOutOfBoundsException,访问数组时的下标超出数组的最大下标时产生该异常
数组的操作
1.库函数复制:System.arraycopy( source,srcPos,dest,destPos,length );
复制source数组中从下标srcPos开始的length个元素到目标数组dest,并从目标数组的下标为destPos的位置开始储存
2.库函数排序: Arrays.sort(数组名);
方法的调用
方法的传递
1.值传递:在方法调用时,实参是将自己的一份拷贝赋给形参,在方法内,对该参数值的修改不影响原来的实参。在方法调用中,String 类型看作基本数据类型,作用域仅为方法内
2.引用传递:当数据作为自定义对象的引用在进行传递时,整个对象不会进行拷贝,直接由形参所接受,如果有方法修改了这个对象,对象就会发生变化。在引用数据类型作为方法参数的时候,形参的任何改变会影响实参的结果。
方法的重载
- 定义:在同一个类中,允许同时存在多个方法名相同但参数列表不同的方法。
- 规则:
- 在同一个类的内部
- 方法名称相同
- 方法的参数列表不同,表现为参数个数不同、参数类型及参数的位置不同
- 与方法的返回值类型、方法修饰符和控制符无关