JAVA基础入门
1.注释
-
单行注释:以 // 开头,后面跟的语句即为注释句,但是一次只能注释一行。
例如:
//这是单行注释 //只能注释这一行
-
多行注释:以 / 开头,以 / 结尾,中间插入的语句即为注释句,可以换行多行注释。
例如:
/*这是多行注释, 这还是多行注释! */
-
文档注释:以 /**** 开头,以 / 结尾,中间可写入注释语句。和多行注释有些区别。*
例如:
/**这是文档注释 *@作者Sue *@日期22/08/30 */
2.标识符
标识符的几个注意点:
- 所有的标识符都是以字母,美元符号或者下划线开头
- 首字符之后可以是任何字符组合
- 不能使用关键字(例如class、static…)作为变量名或方法名!
- 标识符是大小写敏感的
- 可以使用中文命名,但是一般不建议使用
3.数据类型
①基本类型:
-
整数类型
int num1 = 10; //最常用 int num11 = 010; //八进制,输出结果将自动转换成十进制 int num12 = 0x11; //十六进制,输出结果将自动转换成十进制 byte num2 = 20; short num3 = 30; long num4 = 30L; //注意long类型要在数字后面加个L,便于与short类型区分
-
浮点类型
float num5 = 50.1F; //float类型要在数字后面加个F,便于与double类型区分 double num6 = 3.141592653589; /* 浮点数能表达的长度是有限的,无法精确表达时会采用舍入误差来表示。 最好完全避免使用浮点数进行比较!!!容易出错 银行业务通常用BigDecimal(数字工具类)来进行表示 */
-
字符类型
char name = 'A'; //注意字符只能是单个,String才是字符串;String不是关键字,而是类 System.out.println((int)name); //输出结果是65! /* 所有的字符本质还是数字,可以对字符类型进行强制转换(成整型) char类型会涉及到Unicode编码问题,占2个字节;Unicode表中存在很多数据对应的编码,包括中文。 */ /*拓展---转义字符: \t 制表符(四个空格) \n 换行 ... */
-
布尔类型
boolean flag1 = true; boolean flag2 = false; //结果只存在对和错 /* */
②引用类型:
- 类
- 接口
- 数组
4.类型转换
-
强制类型转换
// (类型)变量名 适用于:高→低 int i = 128; byte b = (byte)i; /* byte容量比int低,需要强制转换! 注意这里128已经超出了byte的范围,内存溢出,导致输出结果错误 把i改成127即可。 */
-
自动类型转换
// 适用于:低→高 int i = 128; double b = i; //这时候会直接把i转换成double类型,输出为128.0
-
注意点
①不能对布尔值进行转换
②不能把对象类型转换为不相干的类型
③在把高容量转到低容量时,强制转换
④转换的时候可能存在内存溢出或精度问题!(内存溢出:强制转换例子中有提及到;精度问题:比如把float型或double型转换成int型,就会出现小数点被省略的问题,导致不精确。)
⑤操作比较大的数的时候,为了避免结果溢出问题,可以提前对数值进行强制转换。
int money = 10_0000_0000; int year = 20; int total = money*year; //这时候结果超出20亿,会溢出 long total2 = ((long)year)*money; //先把一个数转换为long
5.变量
-
类变量:写在类里面,方法外面。需要加个static
-
实例变量:写在类里面,方法外面。与类变量区别:
没有static。 -
局部变量:写在方法里面,必须声明和初始化。
public class Day5 { //类变量:写在类里面,要加static static double salary = 21000; //实例变量:从属于对象;如果不自行初始化,输出这个类型的默认值 0或0.0 //布尔值:默认是false //除了基本类型,其余的默认值都是null String name; int age; //main方法 public static void main(String[] args) { //局部变量:必须声明和初始化值 int i = 10; System.out.println(i); //变量类型 变量名 = new Day5();在方法里不能直接被调用; Day5 day5 = new Day5(); System.out.println(day5.age); System.out.println(day5.name); //类变量 static,在方法里可以被直接调用。 System.out.println(salary); } }
6.常量
public class Day51 {
/*
static和final是修饰符,不存在先后顺序,static可以放在final前面/后面;
final表示是常量;
static final(顺序可颠倒) 变量类型 常量名 = 值; 常量名一般用大写字母。
*/
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
}
}
7.运算符
- 算术运算符:+、-、*、/、%、++、–
- 赋值运算符:=
- 关系运算符:>、<、>=、<=、==、!=、instanceof
- 逻辑运算符:&&、||、!
- 位运算符:&、|、^、~、>>、<<、>>> (了解!!!)
- 条件运算符:?、:
- 扩展赋值运算符:+=、-=、*=、/=
public class Demo01 {
public static void main(String[] args) {
//二元运算符
//Ctrl+D : 复制当前行到下一行
int a = 10;
int b = 20;
int c = 25;
int d = 25;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/b); //注意这里除的结果不是整数,会直接根据类型把结果变整数,输出0;
System.out.println(a/(double)b); //把b变成double型即可输出正确结果!
}
}
public class Demo02 {
public static void main(String[] args) {
long a = 123123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
//如果有Long型,结果一定是Long型;如果没有Long型,则结果都为Int型
System.out.println(a+b+c+d); //结果为Long
System.out.println(b+c+d); //结果为Int
System.out.println(c+d); //结果为Int
}
}
//结果按高容量的类型转换。
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果是布尔型: 正确、错误
int a = 10;
int b = 20;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
public class Demo04 {
public static void main(String[] args) {
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a++; //执行完这行代码后,先把a=3赋值给b,a再自增1。
System.out.println(a);
int c = ++a; //执行这行代码前,a先自增1,再把a自增后的值赋值给b。
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
public class Demo05 {
public static void main(String[] args) {
//借助Math工具类来运算
double pow = Math.pow(2,3);
System.out.println(pow); //2*2*2=8
double pow1 = Math.pow(3,2);
System.out.println(pow1); //3*3=9
}
}
//逻辑运算符
public class Demo06 {
public static void main(String[] args) {
//与(&&)、或(||)、非(!)
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b)); //逻辑与运算,两个都为真结果才为真;如果第一个就判断为错,则不进行后面的判断。
System.out.println("a || b:"+(a||b)); //逻辑或运算,其中一个为真,结果就为真
System.out.println("!(a && b):"+!(a&&b)); //如果是真,则变为假,反之。
}
}
/*
位运算符(二进制运算)
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 只有1和1时为1
A/B = 0011 1101 只有0和0时为0
A^B = 0011 0001 相同为0,不同为1
~B = 1111 0010 取反
扩展:
如何让计算机快速计算2*8
口算很快知道为16,但是计算机不知道。
要转化成2*2*2*2 用位运算,效率极高!
System.out.println(2<<3); 即可快速得出结果
<<左移运算符,每左移一次,结果*2
>>右移运算符,每右移一次,结果/2
*/
public class Demo08 {
public static void main(String[] args) {
int a = 10;
int b = 20;
//字符串连接符 + ,加号前面碰到字符串,会把后面的值变成String类型
System.out.println(""+a+b); //结果为1020
System.out.println(a+b+""); //字符串在加号后面,不影响前面计算,结果为30
System.out.println(""+(a+b)); //结果为30
}
}
//三元运算符
public class Demo09 {
public static void main(String[] args) {
// x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 80;
String type = score < 60 ? "不及格":"及格"; //必须掌握,定义的同时直接进行判断
System.out.println(type);
}
}