最近和学长参加一个快手比赛,指定java语言,主要考察多线程处理,大数据文件等,java大三学习过,写过一个java web,写过一个JAVA QQ,都是课程设计,简单的知识还记得,现在针对比赛重新整理学习一番。
最近几天都没有看论文,这星期会看一篇带代码的论文,尽量重构,立下FLAG。
主要分成几部分I/O处理,NIO,多线程。
目录
基本语法
大小写敏感
类名: 首字母大写, 源文件名和类名形同
方法名:应该小写
主方法入口:所有的java程序由public static void main(String[] args) 方法开始执行
包名字一般是域名倒着写,然后加上模块名称,比如京东的包可能叫com.jd.tool
类
- 一个类包含:局部变量,成员变量,类变量(类变量声明在类中,方法体之外,必须为static 类型)
源文件声明规则
- 一个源文件只能有一个public类,多个非public类,名称和public类保持一致
- 在某个包中,package语句应该在首行
- 包含import语句放在package语句和类型之间。
- 包主要是用于对类和接口进行分类
基本数据类型
-
内置数据类型
- byte , 8位,有符号数(-128-127)->(-2^7, 2^7-1)
- short ,16位,有符号数(-215—215-1)
- int, 32位, 有符号数(-231----231-1)
- long, 64位,有符号数
- float, 32位,单精度,不能表示精确的值
- double,64位,双精度
- boolean , 1位
- char, 16位Unicode字符,可以储存任何字符
-
引用类型
- 对象数组都是引用类型,引用默认值为null,.
-
常量
- 使用final关键字声明常量,通常使用大写字母表示常量 。
-
自动类型转换
- 不能对boolean类型进行转换
- 不能把对象转换为不相关类的对象
- 容量大到容量小使用强制类型转换
- 转换可能导致溢出,或者损失精度
- 浮点数到小数通过舍弃小数得到,不是四舍五入
- 必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
-
强制类型转换
-
隐含强制类型转换
变量
- 局部变量声明在方法、构造方法或者语句块中;在栈上分配,没有默认值,所以局部变量声明后必须经过初始化。
- 实例变量声明在一个类中,对象创建的时候创建,对象被销毁的时候销毁。实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。
- 类变量(静态变量),在类中以 static 关键字声明,但必须在方法之外,静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。静态变量在第一次被访问时创建,在程序结束时销毁。
- 类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。
修饰符
- 访问修饰符
- default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
- private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
- public : 对所有类可见。使用对象:类、接口、变量、方法
- protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。
- 访问控制和继承
- 父类中声明为 public 的方法在子类中也必须为 public。
- 父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
- 父类中声明为 private 的方法,不能够被继承。
- 非访问修饰符
- static 修饰符,用来修饰类方法和类变量。
- final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
- abstract 修饰符,用来创建抽象类和抽象方法。
- synchronized 和 volatile 修饰符,主要用于线程的编程。
Number&Math类
- java为每个内置数据类型提供了对应的包装类
- 所有的包装类**(Integer、Long、Byte、Double、Float、Short)**都是抽象类 Number 的子类。
- java Math 包含了数学的属性和方法,方法都被定义为Static类型,通过Math类可以在主函数直接调用。
java Character类
- 方法:isLetter(), isDigit(), isWhitespace(), isUpperCase(), isLowerCase(), toUpperCase(), toLowerCase(), toString()
String 类
- String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了,如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。
- 我们知道输出格式化数字可以使用 printf() 和 format() 方法。String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象。String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
- 方法,参看 Java String API 文档。
Java StringBuffer和StringBuilder类
-
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
-
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
-
StringBuffer 方法,append(), reverse, delte, insert, replace
java 数组
-
二维数组和C++类似,double[] myList = new double[size];
-
多维数组,可以看成数组的数组,
-
Arrays类类能方便地操作数组,它提供的所有方法都是静态的。
-
fill(), sort(), equals(), binarySearch()
-
Java stream, File, IO
下一篇介绍JAVA io。