类型转换
范围由低到高:(因为float是小数类型,所以优先级大于整数类型)
byte,short,char—>int —>long—>float—>double
1、强制类型转换:把高容量的转为低容量。
2、自动类型转换:高容量的获得低容量的值。
3、超过范围,内存会溢出;也会出现精度丢失问题。
System.out.println((int)4.5);//double转int:4
System.out.println((int)-455.244f);//float转int:-455
4、数字之间可以是用下划线
int money=10_0000_0000;//"_":不会输出:1000000000
变量作用域*
代码 :
package com.jrx.Java基础Demo;
public class Demo8_19Java基础学习第二天02 {
//类变量 static
static double salary=2500;
//属性:变量
/*实例变量:从属于对象.如果不自行初始化,这个类型的默认值为0/0.0;
布尔值的默认值为false;
除了基本数据类型,其余的默认值为null。
*/
String name;
double age;
//main方法
public static void main(String[] args) {
//局部变量
int i=1;
System.out.println(i);
System.out.println("======================================");
//实例变量:[变量类型 变量名称 =new 变量类型();]
Demo8_19Java基础学习第二天02 Demo=new Demo8_19Java基础学习第二天02();
System.out.println(Demo.name);//默认值为null
System.out.println(Demo.age);//默认值为0.0
System.out.println("======================================");
//类变量
System.out.println(salary);//类变量从属于类
}
//其他方法
public void add(){
}
}
类变量*static
(JVM中重点讲解) 写在类里面 ,需要 static 关键词 ,类变量从属于类
package com.jrx.Java基础Demo;
public class Demo8_19Java基础学习第二天02 {
//类变量 static
static double salary=2500;
public static void main(String[] args) {
System.out.println(salary);//类变量从属于类
}
}
实例变量
方法的外面,在类里面。变量类型 变量名称 =new 变量类型();
从属于对象.如果不自行初始化,这个类型的默认值为0/0.0; 布尔值的默认值为false;除 了基本数据类型,其余的默认值为null
package com.jrx.Java基础Demo;
public class Demo8_19Java基础学习第二天02 {
/*实例变量:从属于对象.如果不自行初始化,这个类型的默认值为0/0.0;
布尔值的默认值为false;
除了基本数据类型,其余的默认值为null。
*/
String name;
double age;
public static void main(String[] args) {
//[变量类型 变量名称 =new 变量类型();]
Demo8_19Java基础学习第二天02 Demo=new Demo8_19Java基础学习第二天02();
System.out.println(Demo.name);//默认值为null
System.out.println(Demo.age);//默认值为0.0
}
}
局部变量
写在方法里面
package com.jrx.Java基础Demo;
public class Demo8_19Java基础学习第二天02 {
public static void main(String[] args) {
//局部变量
int i=1;
System.out.println(i);
}
}
常量*final
常量(constant):静态的,固定不变的。
final 常量名 =值;(eg: final double PAI=3.14;)
package com.jrx.Java基础Demo;
public class Demo8_19Java基础学习第二天03 {
static final double ID=3.14;//static和final的顺序可以任意
public static void main(String[] args) {
System.out.println(ID);
}
}
运算符
运算符(operator)
一元运算符
++、- -
a++:执行完成这个代码后,先赋值,再自增
++a:执行这个代码前,先自增,再赋值
(a–和--a原理相同)
//一元运算符
int a=3;
int b=a++;//执行完成这个代码后,先给b赋值,再自增
System.out.println(a);//a=4
int c=++a;//执行这个代码前,先自增,再给c赋值
System.out.println(a);//a=5
System.out.println(b);//b=3
System.out.println(c);//c=5
二元运算符
乘除运算中,结果有小数时,int类型会舍弃小数点后面的数,导致丢失精度,需要提前强转类型
运算时,多个操作数中有至少一个数的类型为Long,则结果为long类型;如果没有Long,结果都为int类型
package com.jrx.Java基础Demo;
public class Demo8_19Java基础学习第二天04 {
public static void main(String[] args) {
int i1=2;
int n1=3;
System.out.println(i1/n1);//0
System.out.println(i1/(double)n1);//0.6666666666666666
//与double t1=i1/n1;效果相同
}
}
三元运算符
类型 名称 = 判断 ?正确时输出:不正确时输出;
String a= 2==3?"相等":"不相等!";//正确输出相面的,不正确输出后面的
System.out.println(a);//不相等
幂运算*
由 Math 工具类提供
Math.pow(a,b)进行幂运算:
// 幂运算
double pow = Math.pow(2, 3);//=2*2*2
System.out.println(pow);//8
字符串连接符
String , +
/* 字符串连接符: +,String */
System.out.println(q+w);//50
System.out.println(""+ q+w);//3020 (String类型)
System.out.println(q+w +"");//50 (String类型)
位运算符
& 、| 、^、~、>>、<<、>>>
/*A=0010 1100
B=0001 1001
A&B=0000 1000 全1为1
A|B=0011 1101 有1为1
A^B=0011 0101 相同为0,不同为1
~B=1110 0110 取反
----------------------------
2*8怎么运算最快:2*2*2*2=16
**进行二进制移动**
<<:左移: *2
>>:右移: /2
*/
System.out.println(2<<3);//==2*2^3=16
System.out.println(3<<3);//3*2^3=24
逻辑运算符
&&、||、! (与、 或 、非):进行判断使用,结果为true / false
boolean a=true;
boolean b=false;
System.out.println(b&&a);//false:两个都为真,才是真
System.out.println(b||a);//true:两个都为假,才是假
System.out.println(!(a&&b));//true:取反
int c=5;
boolean d=(c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);//c的值不会增长
//短路 a&&b:如果a是假的,则不会继续执行到b
int c1=5;
boolean d1=(c1<6)&&(c1++<6);
System.out.println(d1);
System.out.println(c1);//c1的值会增长
扩展运算符
+=、-=、*=、/=
int q=10;
int w=20;
q+=w;//q=q+w
System.out.println(q);//30