声明:本人java学习记录笔记都来自于B站“遇见狂神说”的视频教学,本人java小白,只为每天记录下学习总结。
视频地址:https://www.bilibili.com/video/BV12J41137hu/?p=30&share_source=copy_web&vd_source=aa80755950870bd9aba2c0924117d3eb
1数据转换
int i = 128; byte b = (byte)i;//结果值不为128,原因是byte数据类型允许的最大的值为127,内存溢出
//强制转换 (类型)变量名 高---低 //自动转换 低--高
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换位不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题
*/
System.out.println((int)23.7);//23 System.out.println((int)454.64f);//454 System.out.println("============="); char c = 'a'; int d = c + 1; System.out.println(d);//char类型转换为int类型 System.out.println((char)d);//int类型转换为char类型
//操作比较大的数的时候,注意溢出问题 //JDK7新特性,数字之间可以用下划线分割 例如:10_0000_0000 int money = 1000000000; int years = 20; int total = money*years;//-1474836480 内存溢出 long total2 = money*years;//-1474836480 转换之前默认是int,所以还会内存溢出 //低数据类型会自动向高数据类型进行转换 long total3 = money*((long)years);//-20000000000
2变量
变量包括:类变量、实例变量、局部变量
变量的命名规范:
所有变量、方法、类名:见名知意
类成员变量:首字母小写和驼峰原则: monthSalary除了第一个单词以外,后面的单词首字母大写
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线: MAX_VALUE
类名:首字母大写和驼峰原则: Man, GoodMan
方法名:首字母小写和驼峰原则: run(). runRun()
示例:
public class Demo08 { //类变量 static static double salary = 2500; //属性:变量 //实例变量:从属于对象;如果不进行初始化,就会是这个类型的默认值 数值类型:0/0.0 //布尔值:默认值是flase //除了基本类型,其余的默认值都是null String name; int age; //main方法 public static void main(String[] args) { //局部变量:必须声明和初始化值 int i = 10; System.out.println(i); //变量类型 变量名字 = new base.Demo08(); Demo08 demo08 = new Demo08(); System.out.println(demo08); System.out.println(demo08.name); System.out.println(demo08.age); //类变量 System.out.println(salary);//2500 } //其他方法 public void add(){ } }
3常量
//修饰符,不存在先后顺序
static final double PI =3.14;
4运算符
运算符包括:
算术运算符:+,-,*,/,%,++,--
赋值运算符=
关系运算符:>,<,>=,<=,==,!= instanceof
逻辑运算符: &&,||,!
位运算符:&,|,^,~,>>,<<,>>>(了解!!! )
条件运算符?∶
扩展赋值运算符:+=,-=,*=,/=
(1)算数运算符和赋值运算符
// 二元运算符 int a = 10; int b = 20; int c = 25; int d = 25; System.out.println(a+b);//30 System.out.println(a-b);//-10 System.out.println(a*b);//200 System.out.println(a/b);//0 取模向下取整
long a = 123123123123123L; int b = 123; short c = 10; byte d = 8; //如果数据类型有Long,那么结果一定为Long //如果数据类型有double,那么结果一定是double System.out.println(a+b+c+d);//Long System.out.println(b+c+d);//Int System.out.println(c+d);//Int
//++ -- 自增,自减 一元运算符 int a = 3; //a++ a=a+1 int b = a++;//先给b赋值,再自增 int c = ++a;//先自增,再给c赋值 System.out.println(a);//5 System.out.println(a); System.out.println(b);//3 System.out.println(b); System.out.println(c);//5 System.out.println(c); //幂运算2^3 double pow = Math.pow(2,3); System.out.println(pow);
(2)关系运算符
//关系运算符返回的结果: 正确,错误 布尔值 int a = 10; int b = 20; int c = 21; System.out.println(c/a);//2 取模 System.out.println(c%a);//1 取余 System.out.println(a>b);//false System.out.println(a<b);//true System.out.println(a==b);//false System.out.println(a!=b);//true
(3)逻辑运算符
// 逻辑运算符 与或非 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));//如果为真,则变为假,反之亦然 //短路运算 c<4为false,直接结果为false,不再执行后面 int c = 5; boolean d = (c<4)&&(c++<4); System.out.println(d); System.out.println(c);//c = 5
(4)位运算
A = 0011 1100 B = 0000 1101 位运算:效率高 A&B = 0000 1100 A|B = 0011 1101 A^B(异或:相同为0,不同为1) = 0011 0001 ~B(取反) = 1111 0010 常见面试题: 2*8 = 16 << >>左移和右移 //0000 0010 2 //0001 0000 16 System.out.println(2<<3);//16
(5)字符串连接
int a = 10; int b = 20; a+=b;//a=a+b a-=b;//a=a-b //字符串连接符 +2 //面试题:如果字符串在前则会进行拼接,如果字符串在后则进行运算 System.out.println(""+a+b);//1020 System.out.println(a+b+"");//30
(6)三元运算符
//x?y:z //如果x为真,则结果为y,否则结果为z int score = 80; String type = score < 60 ?"不及格":"及格"; System.out.println(type);//及格