1.整型
int : int数据类型是32位,在java中通过补码的形式表示数据其范围:最小值是-2,147,483,648(-2^31);最大值是2,147,483,647(2^31 - 1);
long :long数据类型是64位、有符号的以二进制补码表示的整数;最小值是-9,223,372,036,854,775,808(-2^63);最大值是9,223,372,036,854,775,807(2^63 -1);在表示long型数据是 通常在末尾 加‘l’ 或 ‘L’ 例如 long a = 1000l;
short : short数据类型是16位、有符号的以二进制补码表示的整数最小值是-32768(-2^15);最大值是32767(2^15 - 1);
byte:byte数据类型是8位、有符号的,以二进制补码表示的整数最小值是-128(-2^7)最大值是127(2^7-1)
注意:java中没有任何无符号类型 (unsighed)
2.浮点类型
float : float数据类型是单精度、32位、符合IEEE 754标准的浮点数;float的精确范围为小数点后(6 ~ 7)位
double :double数据类型是双精度、64位、符合IEEE 754标准的浮点数;doube的精确范围为小数点后(15)位
在IEEE754中规定了以下表示溢出的三个特殊值
正无穷
负无穷
NaN(not a number )
3.char类型 char类型是一个单一的16位Unicode字符,
4. boolean: 用于逻辑判断 true false
1.变量初始化
声明一个变量后,必须使用赋值语句对其进行赋值,不能使用未初始化的变量,一下语句便是错误的
int a;
System.out.println(a);//变量未初始化,不能进行使用
2.常量
java中使用关键字final表示这个变量只能赋值一次,就不能在更改了,通常常量的关键字全部大写。
3.枚举类型
jdk1.5之后引入枚举类型,有时候变量的取值在一个有限的集合内时,这是就可以自定义枚举类型语法如下:
enum 类名{
变量1
变量2
…………
}
4.字符串
1.String
从概念上将String就是一个Unicode字符串序列,Java并没有内置的字符串类型,而是在标准java类库中提供了一个预定类String ,同时String类型并没有提供用于修改的方法
2.构建字符串
由于String是不可变字符串每次构建都会生成一个新的String对象,所以StringBulider类就可以避免这个问题
StringBulider sb = new StringBulider();
sb.append("字符串")
……
String s = sb.toString();
3.输入和输出
输入:构建Scanner对象 如 : Scanner sc = new Scanner(System.in); 构建Scanner对象,并且指定对象的输入为键盘System.in 这个输入流可以进行更改
Tips:因为输入是可见的,所以Scanner类不适合用来从控制台读取密码,JavaSe6特别引入 Console类实现这个目的
import java.io.Console;
/**
* @author yiahgn
* @create 2018-08-13
**/
public class Test {
public static void main(String[] args) {
Console console = System.console();
String name = console.readLine("please input your name:");
char[] chars = console.readPassword("please input password:");
String password = String.valueOf(chars);
System.out.println("your name:"+name+" your password:"+password);
}
}
注意,只能通过命令行执行。IDE中会报空指针异常
5.大数值
如果基本整数和浮点数精度不能满足要求,java.math包中提供的BigInteger和BigDecimal 这两个类可以处理包含任意长度数字序列的大数值
BigInteger a = BigInteger.valueOf(数值)
在处理大数值时不能使用算数运算符 + - / * 处理大数据必须使用相应的方法 如 add divide multiply
6.数组
常用的几种方法:
1.数组拷贝
//Arrays.copy( nums[] ,legth)
int [] nums = {1,2,,3,4,5};
itn [] tmp = Arrays.copy(nums ,nums.legth);
//将数组nums中指定长度的数据拷贝到tmp数组中
2.static type copyOfRange(type[] a, int start , int end)
返回与a类型相同的数组,长度为length或者 end - start
3. static int binarySearch(type [] a , type v)
static int binarySearch(type [] a ,int start, int end , type v)
使用二分搜索算法查找值v 如果成功返回下标,否则返回一个负值
4. static void sort(type [] a)
使用快速排序算法对数组进行排序
5. static void fill (type [] a type v)
将数组所有数据元素填充为v