Java类组成
- 修饰符 class 类名 { 类主体 } 如:
public class FirstSample{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
注:Java类名命名规范:必须以字母开头,后面可是字母或数字,长度无限制。首字母大写、每个单词首字母大写(骆驼命名法)。
Java中以分号代表语句的结束。
数据类型
- Java是强类型语言,一共有8中基本数据类型,其中4中整型,2种浮点型,1种字符型,1中真值型。
类型 | 存储 | 范围 |
---|---|---|
byte | 1字节 | -128 ~ 127 |
short | 2字节 | -32768 ~ 32767 |
int | 4字节 | -21.47亿 ~ 21.47亿 |
long | 8字节 | 好大呀 |
- | - | - |
float | 4字节 | 有效位数6-7位 |
double | 8字节 | 有效位数15位 |
- | - | - |
char | 单个字符 | 不常用 |
- | - | - |
boolean | true、false | 逻辑判断 |
变量
- 每个变量都有一个类型,变量以字母开头且有字母和数字组成(不能用Java关键字),采用首字母小写、每个单词字母大写的规则。
- 被关键字final修饰的变量叫做常量,常量表示一旦被赋值就无法再更改值,常量一般全部大写。static final 修饰为静态常量。
运算符
1. + - * / 分别表示加减乘除,其中Math类中包含了各种各样的数学函数。
2. ++n,n++ 都是表示变量n+1,但是在关系表达式中++n是先运用再+1,后者是先+1再运用。
3. < > <= >= && || 分别表示小于、大于、小于等于、大于等于、逻辑并且、逻辑或。&& 有短路作用,即如果第一个表达式已经确定值就不在计算后一个表达式。
4. 三元运算符:表达式?true值:false值。
- 类型转换
1.如果两个值中有一个是double,操作后为double;
2.如果两个值中有一个是float,操作后是float;
3.如果两个值中有一个是long,操作后是long;
4.否则操作后为int;
5.当一个字符串和任何类型拼接时,操作后是String
注:强制类型转换会丢失一部分信息。
字符串
- 字符串就是Unicode字符序列,Java提供了预定义的字符串类String。String是不可变的,也就是说变量的值是什么就是什么,一直不能改变。之所以这样设计是因为Java设计者觉得共享带来的效率高于提取拼接等操作。
- 编译器可以让字符串共享,可以想象各种字符串存放在公共的存储池中,字符串变量指向存储池中的位置,如果复制一个字符串变量,那他们共同享用存储池中的字符串。
- 字符串==比较的是内存地址,字符串相同但内存地址不一定相等,所以比较字符串应该用equals。
- String常用API
1. IntStream codePoints();
2. boolean endsWith(String prefix);
3. int indexOf(String str); 不存在返回-1
4. String subString(int beginIndex , int endIndex); endIndex是不想截取的第一个位置
5. String join("*","L","O","V","E"); L*O*V*E
- String vs StringBuilder vs StringBuffer
1:效率
StringBuilder>StringBuffer>String:
由于String是不可改变的,所以在拼接的时候JVM会回收原来的字符串并创建新的字符串,这样效率很慢。
而StringBuilder和StringBuffer都是变量可以直接更改而不需要回收创建,所以效率会很快。
2:线程安全
StringBuilder是线程不安全的,StringBuffer是线程安全的,其中内置了很多synchronized的方法来保证线程安全,这也是为什么StringBuffer效率低于StringBuilder的原因。
输入输出
- Scanner常用API
1. Scanner in = new Scanner(System.in); 创建输入流
2. Scanner(InputStream in);
3. String next(); 读取下一个单词(空格分割)
4. int nextInt();
5. double nextDouble();
6. boolean hasNext();
7. Scanner(File f);
8. Scanner(String data);
- Console常用API
1. Console cons = System.console();
2. static String readLine(String prompt, object ... args); 读取用户输入
- Paths and PrintWriter
1. Scanner in = new Scanner(Paths.get("myfile.txt"),"UTF-8");
2. PrintWriter out = new PrintWriter("myfile.txt","UTF-8");
流程控制
- 控制流程常用语句
1. if(){}else{}
2. if(){}else if(){} else{}
3. while(){}
4. do{} while()
5. for(int i=0;i<10;i+){}
6. for(l类型 变量 : 待循环变量){}
7. Switch(){case 判断值: 代码段;break; } 类型可为:char,btye,short,int,String,枚举常量
8. break and continue and return,break结束本层循环;continue中止本次循环,继续下一个循环;return 结束程序并返回值。
大数值
- BigInteger and BigDecimal常用API
1. BigInteger valueOf(int i ); 转换
2. add(BigInteger other); 和
3. subtract(BigInteger other); 差
4. multiply(BigInteger other); 积
5. divide(BigInteger other); 商
6. mod(BigInteger other); 余
8. compareTo(BigInteger other); 比较,=0 <负数 >正数
数组
- 数组是一种数据结构,用来存储同一类型值得集合,通过下标可以访问每一个元素的值,下标从0开始。
- 数组操作
1. int[] a = new int[100];
2. int[] a = {1,2,3};
3. int[] b = Arrays.copyOf(a , a.length);
4. Arrays.sort(a);
5. Arrays.toString(a);
6. Arrays.copyRange(a , start , end);
7. Arrays.equals(a , b);
8. 二维数组(矩阵)、多维数组其实都是数组里面嵌套数组
注:初始化没有赋值的数组:数值型赋值为0,布尔型赋值为false,String赋值为null。
愿你经历山河,觉得人间值得
网友评论