Java 基础 (Java 入门笔记) _
数据类型与转换
Java 是一种强类型语言, 变量需要定义后才能使用.
数据类型
基本数据类型
整数:byte,short,int,long(long类型须在数字后加L) .
分别占用 1B, 2B, 4B, 8B.
浮点数:float,double(float类型须在数字后加F) .
分别占用 4B, 8B.
需注意:float有舍入误差,需避免使用float进行比较.
字符:char,String(String不是关键字, 是一种引用类型) .
char使用单引号, 而String使用双引号.
char letter1 = 'A'; String letter2 = "B";布尔值:boolean.
表示 "是" 与 "非".
boolean flag = ture; if(flag == ture){} if(flag ==) {}//这种写法更常用.进制
| 进制 | 前缀 |
|---|---|
| 二进制 | 0b |
| 八进制 | 0 |
| 十进制 | - |
| 十六进制 | 0x |
char character = 'A'; System.out.println((int)character);//加上int可以打印出字符的Unicode编码.(强制转化)类型转换
由于 Java 是强类型语言, 需要进行类型转化 (将不同类型转为相同类型) .
强制转换
由高到低,手动转换.
格式:(类型)变量名
int a = 128; byte b = (byte) a;运算中只要有一个变量被转换了, 其他的也会一同被转换.
自动转换
由低到高,自动转换.
int a = 128; double b = a;注意
布尔值不可以参与转换.
不可以转换成不相干的类型.
转换中可能会出现内存溢出和精度问题.
System.out.println((int) 12.3); //打印12, 丢失精度. System.out.println((byte) 128);//打印-128, 内存溢出.操作大数目时, 需要注意内存溢出.
int num1 = 10_0000_0000; int num2 = 20; System.out.println(num1 * num2); //由于内存溢出, 输出-1474836480. long sum = num1 * (long) num2;//进行一处类型转换. System.out.println(sum);//顺利打印出20000000000.变量和常量
变量
Java 的每个变量必须声明其类型后才能使用.
变量是程序中最基本的单元, 包括变量名,变量类型及作用域.
使用类型 变量名 [=值]进行定义,可以用逗号隔开以声明多个同类型的变量 (不建议) .
int a = 1, b = 2, c = 3;//为了程序可读性, 不要一行定义多个变量!变量作用域
局部变量
只能在一个方法里面使用,必须声明和初始化
方法: 如有public static void main(String[] args), 则有main方法.
实例变量
从属于对象.
public class Demo { int num = 23; String char1 = "abc"; public static void main(String[] args) { Demo Demo = new Demo();//new就是在内存中开辟了一块空间,可以对里面的数据进行操作. System.out.println(Demo.num);//打印23. System.out.println(Demo.char1);//打印abc. } }如不初始化, 则会输出默认值(0, 0.0, ect.)
布尔值的默认值为false.
除了基本类型, 其他类型默认值均为null.
类变量
从属于类, 使用static进行定义.
static是一种修饰符, 修饰符不区分前后顺序.
public class Demo { static int num = 23; public static void main(String[] args) { System.out.println(Demo.num);//不需要new便能成功执行. } }常量
初始化后不能改变值, 可视作一种特殊的变量, 使用final进行定义.
final也是一种修饰符.
常量名称一般使用大写字母.
命名规则
所有变量, 方法, 类名, 都需要遵循见名知意原则.
| 类型 | 大小写 | 驼峰原则 |
|---|---|---|
| 类成员变量 | 首字母小写 | ✓ |
| 局部变量 | 首字母小写 | ✓ |
| 常量 | 全部大写, 使用_分割 | - |
| 类名 | 首字母大写 | ✓ |
| 方法名 | 首字母小写 | ✓ |
驼峰原则: 除了第一个单词, 每个单词首字母大写.
运算符
| 名称类型 | 符号 |
|---|---|
| 算数运算符 | +,-,*,/,%,++,-- |
| 赋值运算符 | = |
| 关系运算符 | >,<,>=,<=,==,!=,instanceof |
| 逻辑运算符 | &&, ` |
| 位运算符 | &, ` |
| 条件运算符 | ?,: |
| 扩展赋值运算符 | +=,-=,*=,/= |
一元运算符只需要一个操作数, 二元, 三元也同理.
运算优先级: 括号最优先, 其次是一元运算符 (多使用括号养成良好习惯).
算数运算符
加, 减, 乘, 除, 模
+,-,*,/,%(模运算, 取余).
当不同类型一同运算时, 结果的类型取决于最高的类型. 如:
当结果会出现小数, 需要对结果进行强制转换, 否则只会出现整数.
long a = 100L; int b = 10; short c = 1; System.out.println( a + b + c);//里面是long类型 System.out.println(b + c);//里面是int类型 System.out.println(c / b);//打印0 System.out.println((double) c / b);//打印0.1如果+的前面有String类型,+则变成字符串连接运算符,负责把多个字符串连接起来.
System.out.println(10 + 20);//打印30 System.out.println("Hello" + 10 + 20);//打印Hello1020 System.out.println(10 + 20 + "Hello" + 25);//打印30Hello25, 前面的会被运算需要注意, 在字符串连接运算符前面的式子会先被计算.
自增自减
++(自增),--(自减). 两个都是一元运算符.
n++,n--(先数字, 后符号):先执行, 后自增/减.
++n,--n(先符号, 后数字):先自增/减, 后执行.
int a = 1, b = 1; int result1 = a++;//a=1---先为result1赋值, 然后才自增 int result3 = a;//a=2 int result2 = ++b;//b=2---先给自己自增, 再给result2赋值 int result4 = b;//b=2