前言
Android写着写着突然觉得自己java基础好差 脑子一热就打算复习一次java了 之前没什么基础看的《java开发实战经典 》
可以说对新手是挺友好的 前段时间刚好趁着当当打折入了本《java核心技术卷I》
看起来觉得比之前的更有深度 也更加有趣些 为了加深自己的印象 就想来写一些笔记来记录一下
命名规范
命名采用驼峰命名法
类名(大写开头 大驼峰) 变量名和方法名(小驼峰) 常量名(全大写)
注释
注释不难 就分为单行注释 多行注释和文档注释
不过需要注意注释时因为有转义字符而导致混乱 从而出错
数据类型
java中的基本数据类型分为4个整型 2个浮点型 1个字符类型和1个表示真值的boolean类型
类型 | 存储需求 | 取值范围 |
---|---|---|
int | 4字节(32位) | -2^32~2^31 |
short | 2字节 | -2^16~2^15 |
long | 8字节 | -2^64~2^63 |
byte | 1字节 | -2^8~2^7 |
float | 4字节 | -2^32~2^31 |
double | 8字节 | -2^64~2^63 |
char | 2字节 | 英文字符占2字节,中文字符根据编码不同 |
boolean | 1字节 | true or false |
1字节=8位
在表示100w时可以使用1_000_000
来表示使易于阅读
long型数据后要加L
二进制前缀为0b
(java 7后才出现的语法)
十六进制前缀为0x
八进制前缀为0
float型数据要加后缀F
用于表示溢出或者出错情况的三个特殊的浮点数值:Double.POSTIVE_INFINITY(正无穷大)
Double.NEGATIVE_INFINITY(负无穷大)
Double.NaN(不是一个数字)
用于判断x是否为这三种情况时应用例如Double.isNaN(x)
这样的语法
转义序列 | 名称 |
---|---|
\b | 退格 |
\t | 制表 |
\n | 换行 |
\r | 回车 |
\" |
双引号 |
\' |
单引号 |
\ | 反斜杆 |
与C和C++不同 java中表示真假只能用ture或者false表示 不能用0或者非0来表示
变量和常量
变量初始化
int a = 1;
复制代码
int a;
a = 1;
复制代码
上面两段代码效果相同
常量要用关键字final来表示 需要全局使用时在前面加个static即可
补充:$尽管在java中是个合法字符 但由于其只用在Java编译器或其他工具生成的名字中 因此在代码不使用该字符
java中的常量和c++和c中的const以及宏定义不同 只能用final来表示
运算符
当参与运算的操作数全为整型时就为整数运算 否则即为浮点数运算 例如:15 / 2 = 7;
15.0 / 2 = 7.5
取模运算时操作数只能为整数(我就记着整数
求余就没错过了)
strictfp关键字
进行严格的浮点计算
Math类中包含着各种我们所需要的数学运算函数
结合赋值和运算符
x = x + 4
和x += 4
的效果是一样的
自增(减)运算符
a++ a-- ++a --a(注意是先执行语句 还是先增减就好了)
关系运算符
&& & || |(与 或 逻辑与 逻辑或也不难)
位运算符
不怎么用的到 看了老是忘 用到了再看吧
运算符优先级
和学C的时候一样都没故意去记 一般都可以用括号代替 还更易于阅读
枚举类型
例子 给出服装的尺寸
enum Size{SMALL,MEDIUM,LARGE};
Size s = Size.MEDIUM;
复制代码
类型转换
数据类型的转换有可能会丢失精度 还有可能会溢出导致转换后的值不是自己想要的了 因此强转要谨慎
类型转换分为自动类型转换和强制类型转换
自动类型转换
在运算时 如果操作数之间的数据类型不同 系统会自动将其转换为同种类型的数据 然后再进行计算
强制类型转换
例如将double类型强制转换为int类型
double a =9.99;
System.out.println((int)a);
复制代码
字符串
字符串不可以被修改
基本使用
String a = "Hello";
复制代码
子串
String a = "Hello";
String s = a.substring(0,3);
//s的值即为"Hel" 长度位3-0=3
复制代码
拼接
两个字符串的拼接太简单了 就不说了
当一个字符串和非字符串进行拼接时,后者会被转换成字符串
如果把多个字符串放在一起可以使用静态join方法
检测字符串是否相等
一般使用equals方法 而==只能判断字符串是否在同一个位置
如果要忽略大小写就使用equalsIgnoreCase方法
检验某一字符串是否为空
0 == a.length()和a.equals("")
不过String还可以存放null的值
检测String的值是否为null使用a==null就可以了
字符串的构建
通过StringBuilder来实现 通过append来添加部分内容 最后通过toString来构建字符串
了解码点与代码单元和字符串的关系
了解一些基本的String API
输入输出
读取输入
还有一个Console类也可以实现输入输出 不过没有Scanner方便
这里通过Scanner来实现
Scanner in = new Scanner(System.in);
String name = in.nextLine();//以行为分隔符
String sex = in.next();//以空格为分隔符
String num = in.nextInt();//读取一个整数
复制代码
格式化输出
大部分和C语言中的没什么区别 格式说明语法看了记不住 用了不懂再看吧
System.out.print();//正常输出
System.out.println();//自动换行输出
复制代码
文件输入输出
Scanner in =new Scanner(filePath,"UTF-8");//输入
PrintWriter out = new PrintWriter(filePath,"UTF-8");//输出
复制代码
由于输入输出又可能出现异常 因此要加上一个throw IOExpection
控制流程
块
就是由{}括起来的部分就叫一个块
条件语句 循环语句 中断控制流程语句
语法不怎么难就不说了
大数值
BigInteger(可以实现任意精度的整型运算)和BigDecimal(可以进行任意精度的浮点型运算)
使用valueOf方法就可以把普通数值转换成大数值了
不过就是运算时不能使用运算符进行计算 而要使用add multiply等函数来进行运算了
数组
定义一个数组
int[] a = new int[100];//两种方法都可以实现
int a[] = new int[100];//我更习惯第一种
复制代码
一般数组定义完后都会有默认值一般为0,null,false啥的
遍历输入或者输出的时候一般使用foreach
使用数组的时候要注意数组越界的问题
java中允许数组长度为0 但是和null不一样
数组初始化和匿名数组
new int[]{111,222,333};//匿名数组
int[] a={2233,443,23};//数组初始化 可以在不创建新变量的情况下重新定义一个数组
复制代码
数组拷贝
使用copyOf()方法来实现 其第一个参数为旧数组 第二个参数为新数组的长度
命令行参数
即main方法里出现的String[] args数组
数组排序
使用sort方法即可实现
多维数组和不规则数组
用的不多 用到了再来看
转载于:https://juejin.im/post/5cf9edf3e51d4555e372a5bc