C:字面值常量的分类
D:案例演示
class Demo1_Constant { //constant 常量
public static void main(String[] args) {
/*
* 字符串常量 用双引号括起来的内容
* 整数常量 所有整数
* 小数常量 所有小数
* 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
* 布尔常量 较为特殊,只有true和false
* 空常量 null(数组部分讲解)
*/
System.out.println("abc"); //字符串常量
System.out.println(123); //整数常量
System.out.println(12.3); //小数常量
//System.out.println('10'); //''中必须放的是单个字符,10代表的是1字符和0字符
//System.out.println(''); //''中什么也不放,也是不可以的,因为代表不了任何字符
System.out.println(' '); //带表空格字符
System.out.println(true); //boolean类只有两个值,true和false
System.out.println(false);
}
}
class Demo1_Scale { //scale 进制
public static void main(String[] args) {
System.out.println(0b100); //4? 二进制表示形式前面加0b(b可以大写也可以小写)
System.out.println(0100); //64? 八进制表示形式前面加0
System.out.println(100);
System.out.println(0x100); //256? 十六进制表示形式前面加0x(可以大写也可以小写)
}
}
class Demo1_DataType { //DataType数据类型
public static void main(String[] args) {
//整数类型
byte b = 10; //占一个字节,-128 到 127
short s = 20; //占两个字节
int i = 30; //占四个字节 整数默认的数据类型就是int类型
long x = 8888888888L; //占八个字节 如果long类型后面加L进行标识最好加大L,因为小l太像一了
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(x);
//System.out.println(12345 + 54321l);
//浮点类型
float f = 12.3F; //占四个字节
double d = 33.4; //占八个字节 小数默认的数据类型是double,double类型后面也可以用D或d标识,但是一般不加
System.out.println(f);
System.out.println(d);
//字符类型
char c = 'a'; //占两个字节
System.out.println(c);
//布尔类型
boolean b1 = true;
boolean b2 = false;
System.out.println(b1);
System.out.println(b2);
}
}
class Demo2_DataType {
public static void main(String[] args) {
/*int x = 10;
int x = 20;
System.out.println(x);
int y;
y = 10;
System.out.println(y);*/
int a,b,c,d,e;
a = 10;
b = 20;
c = 30;
d = 40;
e = 50;
System.out.println(a);
int x = 10;
int y = 20;
int z = 30;
}
}
进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
byte,short,char – int – long – float – double
long: 8个字节
每个指数位减去127
A:它们底层的存储结构不同。
public static void main(String[] args) {
//数据类型转换之隐式转换
/*int x = 3;
byte b = 4;
x = x + b;
System.out.println(x);*/
//数据类型转换之强制转换
/*int x = 3;
byte b = 4;
b = (byte)(x + b);
System.out.println(b);*/
//00000000 00000000 00000000 10000010 130的二进制
//10000010 -126补码
//00000001 -1求反码
//10000001 -126反码
//11111110 -126原码
byte b = (byte)(126 + 4);
System.out.println(b);
//00000000 00000000 00000001 00101100 300的二进制
//00101100
byte b2 = (byte)300;
System.out.println(b2);
}
}
A:案例演示
System.out.println(‘a’+1);
通过看结果知道’a’的值是多少,由此引出ASCII码表
class Demo5_Char {
public static void main(String[] args) {
char c = 'a';
System.out.println(c);
byte b = 100;
char c1 = 97; //0 - 65535
System.out.println(c1);
char c2 = 3;
char c3 = 4;
char c4 = 5;
char c5 = 6;
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
//char类型是否可以存储中文
char c6 = '中';
System.out.println(c6);
}
}
class Demo1_Operator { //operator 运算符
public static void main(String[] args) {
/*
* a:+号在java中有三种作用,代表正号,做加法运算,字符串的连接符
* b:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
* c:/获取的是除法操作的商,%获取的是除法操作的余数
* %运算符
* 当左边的绝对值小于右边绝对值时,结果是左边
* 当左边的绝对值等于右边或是右边的倍数时,结果是0
* 当左边的绝对值大于右边绝对值时,结果是余数
* %运算符结果的符号只和左边有关系,与右边无关
* 任何一个正整数%2结果不是0就是1可以用来当作切换条件
*/
//System.out.println(10 / 3); //整数相除结果只能是整数
//System.out.println(10 / 3.0); //如果想得到小数,把其中一个数变成小数,另一个数在运算的时候会自动类型提升
//System.out.println(-5 % 5);
System.out.println(13 % -5);
}
}
class Demo2_Operator {
/*
* a:单独使用:
* 放在操作数的前面和后面效果一样。(这种用法是我们比较常见的)
* b:参与运算使用:
* 放在操作数的前面,先自增或者自减,然后再参与运算。
* 放在操作数的后面,先参与运算,再自增或者自减。
*/
public static void main(String[] args) {
//单独使用
/*int a = 3;
//a++; //a = a + 1;
++a; //a = a + 1;
System.out.println(a);*/
//参与运算使用
int a = 3;
int b;
//b = a++; //当++在变量后面的时候,会先将变量中的值取出做赋值操作,然后再自身加1
b = ++a; //当++在变量前面的时候,会先自身加1,然后在将结果赋值
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
A:案例演示
int a = 10;
int b = 10;
int c = 10;
a = b++;
c = --a;
b = ++a;
a = c--;
B:案例演示
请分别计算出x,y的值?
int x = 4;
int y = (x++)+(++x)+(x*10);
class Test1_Operator {
public static void main(String[] args) {
//第一题
/*int a = 10;
int b = 10;
int c = 10;
a = b++; //a = 10 ,b = 11
c = --a; //a = 9, c = 9
b = ++a; //a = 10, b = 10
a = c--; //a = 9, c = 8
System.out.println("a = " + a + ",b = " + b + ",c = " + c);*/
//第二题
/*int x = 4;
// 4 + 6+ 60
int y = (x++)+(++x)+(x*10);
System.out.println("x = " + x + ",y = " + y);*/
//第三题问哪句会报错,为什么
byte b = 10;
//b++; //b = (byte)(b + 1)
b = b + 1; //当byte与int进行混合运算的时候,会提升为int类型,两个int相加的结果还是int,赋值给byte会损失精度
System.out.println("b = " + b);
}
}
A:赋值运算符有哪些
a:基本的赋值运算符:=
b:扩展的赋值运算符:+=,-=,*=,/=,%=
class Demo1_Operator {
public static void main(String[] args) {
//赋值运算符
int a = 3; //把右边的常量值赋值给左边的变量,左边必须是变量
//a += 4; //a = a + 4;
a = a + 4;
System.out.println(a);
}
}
class Test1_Operator {
public static void main(String[] args) {
// 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
//short s=1;s = s+1; //当short与int进行运算的时候,会提升为int类型,两个int类型相加的结果也是int类型
short s=1;s+=1; //s = (short)(s + 1);
System.out.println(s);
}
}
注意事项:
无论你的操作是简单还是复杂,结果是boolean类型。
“==”不能写成”=”。
class Demo1_Operator {
public static void main(String[] args) {
//关系运算符
//==,!=,>,>=,<,<=
System.out.println(4 == 3);
System.out.println(4 != 3);
System.out.println(4 > 4);
System.out.println(4 >= 4);
System.out.println(4 < 3);
System.out.println(4 <= 3);
}
}