Day03-数据结构-运算符
基本数据类型

127 3万 21亿 ...
byte<short<int<long float<double booleam(true,false)占一个位
1 2 4 8 4 8 的字节
一个字节等于8个位
long的初始化数值要加L (尽量用大写L) long num=30L; float的初始化数值要加F
char代表一个字('e')占2个字节;UTF-8编码中,一个英文字符等于一个字节,一个中文(含繁体)等于三个字节;Unicode编码中,一个英文等于两个字节,一个中文(含繁体)等于两个字节。 符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。
String不是关键字,它是一个类
整数扩展


浮点数扩展

float (有限,离散,舍入误差,大约,接近但不等于,最好少点使用浮点数进行比较。)有误差
强制转换
System.out.print((int)a);//97 char c = '\u0061';//a(\u转义字符;\t制表符;\n换行)
类型转换
int i = 128; byte b = (byte)i;//输出-128(内存溢出,byte最高127)
低转高
1 int i = 128; 2 double b = i;//自动转换
高转低
System.out.print((int)23.7);//23 System.out.print((int)-45.89f)//-45(直接没有小数 只取整数)
1 int money = 10_0000_0000;//jdk7特性数字之间可以用下划线分割 2 int year = 20; 3 int total = money*year; //-1474836480内存溢出 4 long total2 =money*year;//-1474836480内存溢出(money*year是int,它在转换成long时已经是内存溢出超出int的范围了) 5 long total2 =money*((long)year);//2百亿
变量类型
-
变量可以变化的量
public class Demo08{
//类变量 static(从属于类“Demo08”,下面输出salary会出错)
static double salary = 2500;
//属性:变量
//实例变量:从属对象;如果不初始化,会变成默认值(布尔值默认是false,除了基本数据类型,其余的默认值都是null)
//main方法(类变量名)
public static void main(String[] args){
//局部变量,必须声明和初始化值
int i=10;
String name;
int age;
System.out.print(i);
//变量类型 变量名字 = new Dem08();
Demo08 demo08 = new Demo08();//实例变量
System.out.print(demo08.age);//0
System.out.print(demo08.name);//null
//类变量 static
System.out.print(salary);//出错
}
//其它方法
public void add(){
System.out.print(i);
}
}
常量
public class Demo09{
//修饰符并不存在先后顺序
static final double PI=3.14;//1. final 常量名 2. static和final可以调换
public static void main(String[] args){
System.out.print(PI);//3.14
}
}
变量名的命名规范
-
类名,首字母大写
-
局部变量,方法名,类成员变量,首字母小写和驼峰(如lastName)
-
常量,都是大写和下划线
-
包名,统一小写
运算符
-
普通加减
package yunsuanfu; public class Day03 { public static void main(String[] args) { long a = 123123123123L; int b = 123; short c = 10; byte d = 8; System.out.println(a+b+c+d); //Long System.out.println(b+c+d); //Int System.out.println(c+d); //Int //没有long最后输出的都是int } } //cast转换
-
a++与++a的区别
package yunsuanfu;
public class Day0301 {
public static void main(String[] args) {
int a = 3;
int b = a++;//把a赋值给b,然后a才加1
System.out.println(a);//4
int c = ++a;//把a加一的结果给c,a这时候会变成5
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
//幂运算 3的二次方
double pow = Math.pow(3, 2);
System.out.println(pow);//9.0
}
}
-
&&与(and) ||或(or) 非
package yunsuanfu;
public class Day0302 {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println("a&&b="+(a&&b));//false 有错就错,全对就对
//System.out.println("b&&a="+(b&&a)); 直接短路,判断b是错的就不用接着继续算
/* int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5,因为判断出c<4是错,接着就不运行了 */
System.out.println("a||b="+(a||b));//true 有一个对就对
System.out.println("!(a&&b)="+!(a&&b));//true !是相反
}
}
package yunsuanfu;
public class Day0303 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100 (只有都是1才是1,其它都是0)
A|B = 0011 1101 (有1就1)
A^B = 0011 0001 (相同为0,不相同为1)
!B = 1111 0010 (与原先完全相反)
<<(左移) >>(右移)
*/
System.out.println(2<<3);//16 就是0000 0010(2)左移3位为0001 0000(16)
}
}
浙公网安备 33010602011771号