Java基础
文章目录
1. new project
- new project->empty project->定义名称
- file->project structure->设置正确匹配
2. 标识符
- 所以标识符都以字母(A-Z或a-z)、美元符($)、下划线(_)开始
- 首字符后可以是字母(A-Z或a-z)、美元符($)、下划线(_)或数字的任意组合
- 标识符大小写敏感
- 不能使用关键字作为变量名或方法名
3. 数据类型
-
强类型语言
-
弱类型语言
-
Java数据类型
- 基本类型(primitive type)
- 引用类型(reference type)
String不是关键字,是类
4. 数据类型扩展及面试题
-
整数拓展:二进制0b、八进制0、十六进制0x
-
浮点数拓展:
float 有限的、离散的、舍入误差、接近但不等于
最好避免完全使用浮点数进行比较!!!
float f = 0.1f; // 0.1 double d = 1.0/10; // 0.1 System.out.println(f==d); //运行结果false System.out.println(f); System.out.println(d); float f1 = 23554354641f; float f2 = f1 + 1; System.out.println(f1==f2); //运行结果true System.out.println(f1); System.out.println(f2);
银行业务表示 **BigDecimal **数学工具类
-
字符拓展
char c1 = 'a'; char c2 = '中'; System.out.println(c1); //运行结果 a System.out.println((int) c1); //强制转换 //运行结果 97 System.out.println(c2); //运行结果 中 System.out.println((int) c2); //强制转换 //运行结果 20013
所有字符本质上还是数字!!!
编码问题
Unicode表:(97 = a 65 = A) 2字节 0~65536 ,实际表示 U0000~UFFFF
Excel表格最初也是2^16=65536
char c3 = '\u0037'; System.out.println(c3); //运行结果 7
-
转义字符
转义字符 意义 \n 换行(LF) ,将当前位置移到下一行开头 \r 回车(CR) ,将当前位置移到本行开头 \t 水平制表(HT) (跳到下一个TAB位置) \\ 代表一个反斜线字符\ \’ 代表一个单引号(撇号)字符 \" 代表一个双引号字符 -
对象内存
//对象 从内存分析 String sa = new String("he"); String sb = new String("he"); System.out.println(sa==sb);//运行结果 false String sc = "he"; String sd = "he"; System.out.println(sc==sd);//运行结果 true
-
布尔值扩展
//布尔值扩展 less is more! boolean flag = true; //两句等价 if (flag==true){} if (flag){}
5. 类型转换
-
低 ----------------------------------------------------> 高
byte,short,char -> int -> long -> float -> double
//byte int int i = 128; byte b = (byte)i;//强制转换 高->低 System.out.println(i);//运行结果 128 System.out.println(b);//运行结果 -128 内存溢出!!
//char int char c = 'a'; int in1 = c + 1; System.out.println(in1);//运行结果 98 System.out.println((char)in1);//运行结果 b
-
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换时候可能存在内存溢出,或者精度问题
-
操作比较大的数据时,注意溢出问题
int mo = 10_0000_0000; int year = 20; int total = mo*year; //-1474836480 ,计算时候溢出 long total2 = mo*year; //-1474836480,默认是int,转换之前已经出现问题 long total3 = mo*((long)year);//20000000000,先把一个数转换为long
6. 变量、常量、作用域
(1)变量
是最基本的存储单元,要素:变量名、变量类型和作用域。
注意:尽量一行不要定义多个变量。
作用域:类变量、实例变量、局部变量
局部变量
必须声明和初始化,只能使用在此对应的{}之内。
public class Demo04 {
public static void main(String[] args) {
//局部变量,必须声明和初始化,只能使用在此对应的{}之内
int i = 10;
System.out.println(i);
}
}
实例变量
从属于对象(从属于所在类);
如果不自行初始化,则为这个类型的默认值;
布尔值:默认为false
除了基本类型,其他默认值都是null。
public class Demo04 {
String name;
int age;
float f;
public static void main(String[] args) {
//变量类型 变量名字
Demo04 demo04 = new Demo04();
System.out.println(demo04.name);//运行结果 null
System.out.println(demo04.age);//运行结果 0
System.out.println(demo04.f);//运行结果 0.0
}
}
类变量
static,从属于所在类。
public class Demo04 {
//类变量 static
static double salary = 2500;
public static void main(String[] args) {
//类变量 static
System.out.println(salary);//运行结果 2500.0
}
}
(2)常量
final,初始化后不能改变值!
常量名一般使用大写字符。
public class Demo05 {
static final double PI = 3.14;
//final static double PI = 3.14;
//修饰符,不存在前后
public static void main(String[] args) {
System.out.println(PI); //运行结果 3.14
}
}
(3)变量命名规范
- 所有变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary
- 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE
- 方法名:首字母小写和驼峰原则:runRun()
- 类名:首字母大写和驼峰原则:GoodMan
7. 运算符
算术运算/:注意作用范围。
算术运算时候:只有有long参与则结果为long;若没有long,则结果全为in。
碎知识点
-
JDK7新特性,数字之间可以用下划线分割
int mo = 10_0000_0000;