强制转换
不同数据转换成为同一类型进行操作----------从低到高,强制转换(注意内存溢出或精度问题)
自动转换
自动转,不用加前缀,低到高
不能对布尔值进行转换
不能把对象类型转换为不相干的类型
char c = 'a'; int d = c +1; System.out.println(d); ----------------------98 System.out.println((char)d);```------------------b
JDK7数字间可以加入下划线,输出不变
int money = 100000000; int money= 100_000_000;
int a; int b; int c = a*b;溢出 long c2= a*b;溢出---先算a*b,a*b为int型,算完了,结果溢出,转换前已经有问题了 Long c3= a*(long)b;(解决方法,先把一个转化为long型)变量
java是一种强类型语言,每个变量都必须声明其类型-----基本类型或引用类型
Java变量是程序中最基本的存储单元,要素包括变量名,变量类型和作用域
变量名必须为合法的标识符
变量声明是一条完整的语句,以分号结束
定义多值逗号隔开
int a= 1; String name = "asd"; char x = 'X'; double pi = 3.14;
java中单引号和双引号区别
区别1:java中的单引号表示字符,java中的双引号是字符串。
区别2:单引号引的数据一般是char类型的;双引号引的数据 是String类型的。
区别3:java中单引号里面只能放一个字母或数字或符号;java中的双引号里面是0到多个字符构成。所以字符可以直接转换成字符串。字符串需要使用charAt(n) 来获取第几个字符。
char定义时用单引号,只能有一个字母,数字。char c=‘c’;而String用双引号,可以是一个,也可能是多个字母,汉字等。就是所谓的字符串。String s=“adsaf”;
char只是一个基本类型,而String 可以是一个类,可以直接引用。比如char c=‘c’;不能直接对c调用方法。String s=“abc”; 这时可以调用s.charAt(0);等方法,因为String是类,这是就是对象的调用了。
类成员变量,首字母小写加驼峰原则
局部变量,首字母小写加驼峰原则
常量,全全部字母大写加下划线
类名,首字母大写加驼峰原则
方法名,首字母小写加驼峰原则
类变量-------写在类里面,static
实例变量----写在方法外面,类的里面,没有static 关键词,
局部变量----写在方法里面的
public class S{ // s--类名
static int acc = 0; //类变量
String str = "hello world"; //实例变量 // st--变量名
public void add(){ // public void 的 ass--方法名
int i = 0; //局部变量
}
}
public class A{
//类变量 static
static double salary = 2500;
// 类里面还可以定义一些属性
//实例变量 从属于对象,如果不赋初值,基本类型(byte1字节,short2字节,int4字节,long8字节,float4字节,double8字节,char2字节,boolean)的默认值 0 或者0.0 ;布尔值默认值false;除了基本类型,别的默认值为null
String name;
int age;
----------------------------------------------------------------------------------------------------------
// main 方法
public static void main (String[] args){
//局部变量;写在方法里面,必须声明和初始化值
int i;
System.out.println(i);--------1.不赋初值,无法输出,int i = 10; 2.在add方法中无法输出
//变量类型 变量名字 = new A();
A a = new A ();
System.out.println(a.age);------------------------0
System.out.println(a.name);---------------------null
//类变量 static
System.out.println(salary);
}
---------------------------------------------------------------------------------------------------------
//其他方法 add方法
pubilc void add(){
}
}
代码块static{},作用域就高了。
类名,变量名,方法名,称为----标识符—首字母以 ----英文字母大小写,$或 _ 开始,首字母后可以含数字;不能以关键字做标识符名字;标识符大小写敏感。
设定后不可改变,一般都用大写字母表示。
final 常量名 = 值;------常量名多为大写
final double PI = 3.14;
public class A{
static final double PI = 3.14;-----static 和final 位置可互换,修饰符不存在先后顺序
public static void main (String [] args){
System.out.println(PI);
}
}
运算符 operator
算术运算符 -------- 二元运算符+ - * / % 一元运算符++ --除法注意int-------->double
赋值运算符=
关系运算符> < >= <= == != 返回值是布尔值
逻辑运算符 && || !与或非(取反)
位运算符 & | ^ ~ >> <<
条件运算符 ?:三元运算符 x ? y : z 如果x==true,则结果为y,否则为z
扩展赋值运算符 += -= *= /=
很多运算会采用工具类函数,如 Math.pow()函数
优先级()
int a = 3; int b = a++; // b=(a=a+1)-------a++,执行代码后,先赋值给b,a再等于a+1 system.out.println(a);---------4 int c = ++a; //----------------------++a,执行代码前,a先加1。再赋值给c system.out.println(a);--------5 system.out.println(b);--------3 system.out.println(c);--------5
短路运算
int c = 5; boolean d = (c<4)&&(c++<4); System.out.println(d);------------------------false System.out.println(c);----------------------5
int c = 5; boolean d = (c++<4)&&(c<4); System.out.println(d);------------------------false System.out.println(c);----------------------6
位运算
A = 0011 1100 B = 0000 1101 A&B = 0000 1100--------------------00为0,10为0,11为1--------含0为0 A|B = 0011 1101--------------------00为0,10为1,11为1--------含1为1 A^B = 0011 0010-------------------00为0,01为1,11为0---------相同为0,不同为1 ~B = 1111 0010
逻辑运算
int score = 80; String type = score < 60? "及格" : "不及格"(也可以if判断) System.out.println(type);---------------------及格问
如何计算2*8最快 (位运算,效率高)
左移 << *2
右移 >> /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
System.out.println(2<<3);------------------16
字符串连接符 + 号有String类型,会转化为String类型进行运算
int a = 10;
int b = 20;
System.out.println(""+a+b);---------1020
System.out.println(a+b);------------30
System.out.println(""+a+b);
System.out.println(a+b""+);
有什么区别?
System.out.println(""+a+b);--------1020
System.out.println(a+b""+);---------30



