java常见概念
- 对象:对象是类的一个实例,有状态和行为。
- 类:类是一个模板,它描述一类对象的行为和状态。
- 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
- 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
基本语法
- 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。
- 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
- 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
- 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。。
- 主方法入口:所有的Java 程序由public static void main(String []args)方法开始执行。在java中main方法并没有给操作系统返回“退出代码”,如果main方法正常退出,那么java应用程序退出代码为 0 ,表示成功退出,强制终止代码可以调用System.exit方法
数据类型
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