一、定义变量的格式
1、必须对其限定,数据类型
2、将来我们想要拿到价格的时候,肯定不是拿着这个空间去做计算,而是给这一块空间起个名字,价格呢就是这个名字对应的值。变量名。
3、将来做计算的时候,拿到了这个变量,但是没有值也是没有意义的,所以我们要给它赋值。初始化值。
总结得到定义变量的格式:
数据类型 变量名 = 初始化值
【定义变量的注意事项:
1、作用域:变量在同一个大括号内有效,出了大括号外无效。
2、相同的作用域中不能定义两个同名的量。
3、没有初始化值不能直接使用,在使用之前赋值即可
4、不建议在一行上定义多个变量,强制定义一个变量为一行。
二、数据类型
1、基本数据类型
整数类型 占用字节 可表示的范围
byte 1 -2^7~2^7-1
short 2 -2^15~2^15-1
int 4 -2^31~2^31-1
long 8 -2^63~2^63-1
浮点类型
float 4 -3.403*10^38~3.403*10^38
double 8 -1.798*10^308~1.798*10^308
字符型
char 2
布尔型
boolean 1
引用数据类型(放到面向对象的时候说)
注意事项:
1、整数默认是int类型
2、如果要定义一个long型的数据,末尾要加上L或l,推荐L
3、默认是double类型
4、如果要定义一个float类型的数据,末尾要加上F或者f,推荐F
例:public class DataTypeDemo1{
public static vodi main(String[] args){
//定义一个int类型的变量
//定义变量的格式:数据类型 变量名 = 初始化值;
int i=10;
//定义一个byte类型的变量
byte j = 20;
//定义一个short类型的变量
short a = 100;
//因为10000000000超过了int的数据类型范围
//int b =10000000000;
//如果要定义一个long类型的数据,末尾要加上L或l,推荐L
long l = 10000000000L;
//定义一个float类型的数据
float f = 10000000000.F;
//定义一个double类型的数据
double = 12.34;
//定义一个char类型的数据
char='a';
//char c1 = 'abc';
//定义一个boolean类型的数据
boolean b2 = true;
boolean b3=false;
}
}
三、自动类型转换、强制类型转换
1、+一般情况下,做加法运算。
2、boolean类型的变量不能赋值给其他数据类型
3、默认转换
byte,short,char——int——long——float——double
byte,short,char相互之间补转换,他们参与运算首先转换为int类型
4、强制类型转换的格式:
目标数据类型 目标变量名 = (目标数据类型)要进行赋值变量不建议大量使用强制类型转换,因为可能会损失精度。
例:
public class DataTypeDemo3{
public static void main(String[] args){
// int a =10;
// int b =20;
// int c =a+b;
// System.out.println(c);
//
// boolean flag =true;
// a = flag;
byte b = 3;
int a = 4;
//自动类型转换
// a = b;
// b = a;
// int i = 10;
// long l = i;
//强制类型转换
// byte b1 = a;
byte b1 =(byte) a;
System.out.println(a);
}
}
5、面试题
byte b1 = 3,b2 = 4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
变量相加和常量相加不一样:
1、变量相加首先会提升数据类型,然后再相加赋值,如果接收的数据类型范围小于计算结果后的数据类型范围,报错,不能赋值。
2、常量相加,会先进行计算,计算完后看看在不在接收的数据类型范围内,如果在,直接赋值,如果不在,报错。
public class DataTyoeDemo4{
public static void main(String[] args){
// int a = 3;
// byte b = 4;
// int c1 = a+b;
//
// byte c2 = (byte)(a+b);
// System.out.println(c2);
byte b1 = 3,b2 = 4,b;
// b=b1+b2;
b=(byte)(b1+b2);
b=3+4;
}
}
6、byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
有问题的,因为byte数据类型的范围是在-128~127之间,而130超出了范围。
public class DataTypeDemo5{
public static void main(String[] args){
// byte b = 130;
byte b =(byte)130;
System.out.println(b);//-126
b = (byte)131;
System.out.println(b);
byte b1 = (byte)300;
System.out.println(b1);// 44
}
}
我们知道数据在计算机中运算的时候是采用补码的形式参数运算的,所以要知道130的补码,而想知道补码,就得知道反码,原码,所以得求出130的二进制的表示:
130的二进制:10000010
由于整数默认是int类型,所以扩大字节
130的原码为:00000000 00000000 00000000 10000010
又由于最高位是0,所以它的原码,反码,补码都一样。
130的补码:00000000 00000000 00000000 10000010
做截取操作:10000010这是补码
已知补码,求原码:
符号位 数值位
补码: 1 0000010
反码: 1 0000001
原码: 1 1111110
最终结果为:1111110
将它换算成十进制就是:-126
7、ASCLL码
/*
System.out.println('a');
System.out.println('a'+1);
代码格式化的快捷键:ctrl+alt+L
ASCLL码表必须记住的三个字符对应的值:
'0' 48
'A' 65
'a' 97
*/
public class DataTypeDemo6{
public static void main(String[] args){
System.out.println('a');
//字符参与算术运算的时候,会将字符转化成对应的ASCLL码表中的值参与运算
System.out.println('c'+1);// 98
}
}
7、+号的用法
/*
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
System.out.println("5+5="+5+5);
System.out.println(5+5"=5+5");
+号的用法:
1、当加号两边都是数字或者数字和字符的时候,这时候的+号做的是加法运算
2、当加号两边是其中的字符的时候,做的是字符串拼接,拼接后是一个新的字符串
3、字符串与任何数值做加法,做的是字符串拼接,拼接后是一个新的字符串
*/
public class DataTypeDemo7{
public static void main(String[] args){
System.out.println("hello"+'a'+1);//helloa1
System.out.println('a'+1+"hello");//98hello
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5
//System.out.println("5+5="+5+5);//5+5=55我就想先计算后面的5+5怎么办?
//小括号可以改变运算的顺序优先级
System.out.println("5+5="+(5+5));
}
}
8、++、--运算
++:自加1
当++在前的时候,先自加1,再做赋值操作,当++在后的时候,先做赋值操作,再做自加1
--:自减1
当--在前的时候,先自减1,再做赋值操作,当--在后的时候,先做赋值操作,再做自减1
public class DataTypeDemo8{
public static void main(String[] args){
// int a = 10;
// int c = a--;
// System.out.println(a);//9
// System.out.println(c);//10
//
// int a1 = 10;
// int c1= --a1;
// System.out.println(a1);//9
// System.out.println(c1);//9
int a = 10;
int c = a++;
System.out.println(a);//11
System.out.println(c);//10
int a1 = 10;
int c1 =++a1;
System.out.println(a1);//11
System.out.println(c1);//11
}
}
9、运算符
运算:对常量和变量进行操作的过程称为运算
运算符:对常量和变量进行操作的符号称为运算符
操作数:参与运算的数据
表达式:用运算符把常量或者变量连接起来符号并且符合java语法的式子就可以称为表达式。不同运算符连接的式子体现的是不同类型的表达式。
(1)算数运算符:+,-,*,/,%,++,--
例:
public class OptArithmeticDemo3{
public static void main(String[] args){
int a = 4;
int b = (a++)+(++a)+(a*10);
// 4 6 60
// a=5 a=6 a=6
System.out.println(a);//6
System.out.println(b);//70
}
}
(2)赋值运算符:=,+=,-=,*=,/=,%=
其中我们一直在使用的也是最常用的:=
public class OptFuZhiDemo1{
public static void main(String[] args){
// int a = 10;
// int b = a;
// System.out.println(a);
// System.out.println(b);
//+=
// int a +=10;
int a = 10;
a +=20;//这里实际上可以看作为a的值加上了一个20再赋值给a,但是不能完全等于a = a + 20;
System.out.println(a);
//-=
a-=10;
System.out.println(a);//20
//*=
a*=2;
System.out.println(a);//40
// /=
a/=2;
System.out.println(a);//20
//%=
a%=3;
System.out.println(a);//2
}
}
例:(接)OptFuZhiDemo2.java(E:兰智大数据学习内容/Java/day03)