常量:字面值常量(字符串,字符,整数,小数,布尔,null),自定义常量,‘‘这个不是字符常量,""这个是字符串常量
进制:
C:字面值常量的分类
D:案例演示
容量的转换
1byte = 8bit
* 1024byte = 1k
* 1024k = 1m
* 1024m = 1g
* 1024g = 1t
A:案例演示
小数给float赋值时,数据后面加f
案例:
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; //占八个字节 如果不加L系统默认为int类型,如果这个数值不在int的范围之内就会报错,如果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型,损失精度会报错,
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;
}
}
C:画图解释byte+int类型的问题
案例:
class Demo3_DataTypeConversion { //Conversion转换
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);
}
}
C:强制转换的注意事项
如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同
byte类型的数据的取值范围:-128-127之间
案例:
class Demo3_DataTypeConversion { //Conversion转换
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);
}
}
案例:
class Test1_DataTypeConversion {
public static void main(String[] args) {
//面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
byte b1 = 3;
byte b2 = 4;
//byte b3 = b1 + b2;
/*
从两方面
1,byte与byte(或short,char)进行运算的时候会提升为int(因为整数默认的类型为int),两个int类型相加的结果也是int类型
2,b1和b2是两个变量,变量存储的值是变化,在编译的时候无法判断里面具体的值,相加有可能会超出byte的取值范围
*/
//System.out.println(b3);
//byte b4 = 3 + 4; //java编译器有常量优化机制,在编译的时候就把3+4的结果计算出来了,
byte b4 = 7; //以判断7在-128至127之间
System.out.println(b4);
}
}
进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
byte,short,char – int – long – float – double(依次向右提升)
long: 8个字节
每个指数位减去127
A:它们底层的存储结构不同。
B:float表示的数据范围比long的范围要大
-126 - 127
23位代表尾数位
*/
}
}
A:案例演示
System.out.println(‘a‘+1);
通过看结果知道‘a‘的值是多少,由此引出ASCII码表
D:+在有字符串参与中被称为字符串连接符
System.out.println(5+5+"=5+5");
案例:
class Demo4_DataTypeConversion {
public static void main(String[] args) {
//System.out.println(‘a‘ + 1); //98,因为有ASCII码表,a字符对应的是int类型的97
//字符型数据和整型数据进行运算会将字符提升为整型
//System.out.println((char)(‘a‘ + 1));//这里会打出b,System.out.println(char(‘a‘+1));是错的为什么?
System.out.println("hello"+‘a‘+1); //结果helloa1 //任何数据类型用+与字符串相连接都会产生新的字符串
System.out.println(‘a‘+1+"hello"); //结果98hello,按照优先顺序计算
System.out.println(" 5 + 5 = " + (5 + 5)); //结果是5+5=10;
System.out.println(" 5 + 5 = " + 5 + 5); // 结果是5+5=55
}
}
B:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
所以,Java中的字符可以存储一个中文汉字
案例:
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);
}
}
D:注意事项:
%运算符
//System.out.println(10 / 3); //整数相除结果只能是整数
//System.out.println(10 / 3.0); //如果想得到小数,把其中一个数变成小数,另一个数在运算的时候会自动类型提升
//System.out.println(-5 % 5);
System.out.println(13 % -5);
}
}
B:案例演示
b:参与运算使用:
//参与运算使用
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);
C:面试题
问哪句会报错,为什么
案例:
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)+(x10);
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:扩展的赋值运算符:+=,-=,*=,/=,%=
//a += 4; //a = a + 4;
a = a + 4;
System.out.println(a);
}
}
A:案例演示
short s=1;s+=1;
案例:
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);
}
}
0b11001100
4.补充知识4:byte类型的数据范围:
正数最小值: 0 000 0001(+1)
正数的最大值:0 111 1111(+127)
0: 0 000 00000(0)
负数:
负数的最小值:1 111 1111(-127)
负数的最大值:1 000 0001(-1)
1 000 0000?表示什么呢?0111 11111+1
当用某种数据类型的正数的最大值+1之后,此时发生了一种情况,符号位变成了1,其余全是0
这样的话,此时的符号位1既代表符号位,又代表数值位(-128)
5.补充知识5:
对于整数而言,当超出int的范围赋值时,数字后面加L
对于小数而言,当给float类型赋值时要加F
int类型:2^31-1
cahr类型(无符号数,2个字节):2^16-1
7.根据变量的作用范围来分?
(1).局部变量:在方法声明上定义的变量或者在方法内部定义的变量,在整个方法内部有效
(2).成员变量(实例变量,类变量):
a.实例变量在类中方法外定义的变量(不用static修饰),在整个实例(对象)中有效
b.类变量在类中方法外定义的变量(用static修饰),在整个类中有效
8.调用和被调用
(1).形式参数:在方法声明时所定义的参数
(2).实际参数:在调用该方法时,所给定的实际的参数
9.利用/和%求出一个四位数字中的个位,十位,百位,千位上的数字并输出
class Demo1 {
public static void main(String[] args) {
int i = 12456;
int a1 =0, a2 =0, a3 = 0,a4 =0, a5 =0;
a1=i/10000;
a2=i%10000/1000;
a3=i%1000/100;
a4=i%100/10;
a5=i%10;
System.out.println("各位数是"+a5+",十位数是"+a4+",百位数是"+a3+",千位数是"+a2+",万位数是"+a1);
}
}
10.给定一个小写字母,将其变成大写字母并输出
/*
实现给出字母z,转换成大写字母Z然后打印出来
/
class Demo2 {
public static void main(String[] args) {
char c = ‘z‘; //注意‘z‘的写法,容易不加单引号
char c1 = (char)(c-32); //小写的字母值比大写的字母值更大
System.out.println(c1);
}
11.讲一下a = a++;
/
int a = 3;
int x = 0;
x = a++;//a=4, x=3
x = a++;//a=5, x=4
x = a++;//x=5,a = 6
System.out.println("x = "+x);
x = x++;
/先(x++)得出(x++)的值是5,然后进行赋值运算x=(x++),
所以x还是等于5,相当于先把x变为6,然后再次给他赋值成5,运算了两次,所以这种表达不管运算多少次都是原始值/
x = x++;
x = x++;
System.out.println("x = "+x);
*/
1.表达式:变量和运算符连接而成的式子如:a+b,a++,a–
2.x = a++;(里面有两个运算符++和=,但是++的优先级要高于=)
(1)是将(a++)表达式的值赋值给变量x,而不是将a的值赋值给变量x,所以我们要先计算a++表达式的值,由于++符号在a的后面,所以先使用a的值,
作为表达式的值,所以a++表达式的值是3
(2)进行++运算,a=a+1,a变成4,但是不管a的值变为了多少,都不会影响第(1)步中的表达式a++的值(3)
(3)进行赋值运算,将a++表达式的值(第一步已经算出来了3)赋值给x,x变为3
原文:http://www.cnblogs.com/itlyh/p/6024651.html