一、预备知识
-
二进制
二进制数据就是0和1两个数码来表示的数,它的基数为2,进位规则为“逢二进一”,二进制对应两种状态,广泛应用与电子科学。 -
十进制与二进制的转换
在线进制转换工具:https://tool.lu/hexconvert/
2.1. 十进制转二进制:除2取余,逆序排序
2.2. 二进制转十进制:权相加法 -
注释:注释语句不会被执行,不会出现在class文件里面
3.1单行注释:// 后面的全是注释部分
3.2多行注释:/* / 注意多行注释不可嵌套
3.3文本注释:/* */ -
标识符
用来给变量,类,方法以及包进行命名的。
4.1标识符必须是以字母,下划线,美元符号$开头
4.2 标识符其他部分可以是字母,下划线,美元符和数字的任意组合
4.3java标识符大小写敏感,且长度无限制
4.4 标识符不可以是java的关键字
标识符的使用规则:
表示类名的标识符:每个单词的首字母大写,如Man
表示方法和变量的标识符:第一个单词小写,从第二个单词开始首字母大写,称之为“驼峰原则”
二、变量(类似于停车场的车位)
1.变量的本质
可操作的存储空间,空间确定,存放的东西不确定
2.变量的分类和作用域
分为:局部变量,成员变量,静态变量
3.常量(Constants)
常量通常指的是不变的固定的量,用final 表示。常量只能初始化一次
public class testConstants{
public static void main(String[] args){
PI=3.15;//编译错误,不能再次被赋值!
}
}
为了更好的区分和表述,一般将1.2.‘a’等称为字符常量,用final修饰的称为符号常量。
三、基本数据类型
java是一种强类型语言。每个变量都必须声明数据类型,分为基本数据类型和引言数据类型。
java定义了3种基本数据类型
- 数值型:
整数类型:byte(1) short(2) int(4) long(8)
浮点类型: float(4) double(8) - 字符型:char
- 布尔型:boolean
java定义了三种引用数据类型(4个字节)
- 类:class
- 接口:interface
- 数组
1、整型
java语言中整型常量的四种表示形式
- 十进制整数:
- 八进制整数:要求以0开头,如015
- 十六进制整数:要求以0x或0X开头,如0x15
- 二进制数:要求以0b或0B开头,如0b011100011
注意:java语言默认是int ,要定义long的时候要加L
long a=5555;//编译成功,在int范围类(21亿)
long a=5555555555;//编译错误,超出了int能够表示的范围
long a=5555555555L;//编译成功
2.浮点数
java浮点类型常量有两种表示方法
- 十进制数形式:
- 科学技术法:如3.14e0
float类型的数值有一个后缀F或者f,没有此后缀的默认是double类型,也可以直接加D或者d,用来表明为double类型。
float d=1.65;//编译错误,1.65是double类型的浮点常量,不能直接赋值给float
float d=1.65f;//编译成功
3.字符型
字符型占两个字节,‘a’和“a”是不相同的,“a”表示含有一个字符的字符串。char类型用来表示unicode编码表中的字符。用‘\u…’表示。
char c=‘a’;
char d='中';
char e=‘中国’;//编译错误,‘中国’属于字符串,不可以用char定义,可以用String定义
char a=‘\n’//表示换行
System.out.println("a\nb\nc\n")//表示输出a,b,c后各自换行
4.Boolean型
有两个值:true和false
定义:boolean b=true;Boolean c=false;
四、运算符
- 算数运算符
属于二元运算符,需要两个操作数才能运算,基本的加减乘除。
自增自减只需要一个操作数。
整数运算
若两个操作数有一个为long,则结果也为long
若没有long时,结果为int,即使操作数权威short,byte,结果也是int
浮点运算
两个操作数有一个为doule,则结果是double
如果两个操作数都是float,结果才是float
取模运算
其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同,如7%3=1,-7%3=-1,7%-3=1
int a=3;
int b=a++;//执行完后,b=3,先赋值,后自增
b=++a;//执行胡b=4,先自增,再赋值
- 赋值及其扩展赋值运算符
int a=6;//把6赋值给a
int b=7;
a+=b ;//等价与a=a+b;
a-=b ;//等价与a=a-b;
a*=b ;//等价与a=a*b;
a/=b ;//等价与a=a/b;
- 关系运算符
如:
int a=3;
int b=4;
Boolean c=a>b;
System.out.println(c);//打印false
- 逻辑运算符
逻辑运算符的操作数和运算结果都是Boolean值
Boolean a=true;
Boolean b=false;
System.out.println(a&b);//与,有一个为false,结果为false
System.out.println(a|b);//或,有一个true,结果为true。
System.out.println(!b);//非,结果为true
System.out.println(a^b);//异或,相同false,不同为true。结果为true
- 位运算符
按位与:有0则0,全1为1;
按位或:有1则1,全0则0;
按位异或:相同为false,不同为true,
int a=7;
int b=8;
System.out.println(a&b);//与,有0则0,结果为0
System.out.println(a|b);//或,有1则1,结果为15
System.out.println(~b);//非,结果为-9
System.out.println(a^b)//按位异或,相同为false ,结果为15
//移位
int c=5<<2;
System.out.println(c);//相当于5*2*2,结果为20;
System.out.println(40>>3);//相当于40/2/2/2,结果为8;
- 字符串连接符
“+”运算符两侧的操作数只要有一个是字符串类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
int a=12;
System.out.println("a="+a);//输出结果为a=12
//条件是string,不能是char,若为char,任然是加号,不是连接符。
char c=‘h’;
char d=‘i’;
System.out.println(c+d);//结果是209
System.out.println(""+c+d);//通过""+把整个运算换成字符串运算。
- 条件运算符
语法格式:x?y:z
若x的值为true,则结果为y,若x为false,则结果为z; - 运算符优先级
注意:
逻辑非>逻辑与>逻辑或。如a||b&&c的运算结果为:a||(b&&c)
遇到复杂的运算可以用小括号来简便。
五、数据类型的转换
- 自动类型转换
容量小的数据可以转换为容量大的数据
实线表示无损数据丢失的自动类型转换,虚线表示转换时有可能会有精度 的损失。
特例:整型常量是int类型,但是可以自动转换为byte,short,char,只要不超过其表示范围
int a=23;
long b=a;//int可以转换为long
int c=b;//编译错误,long不可以转换为int
//特例:整型常量是int类型,但是可以自动转换为byte,short,char,只要不超过其表示范围。
short b=12;//合法
short b=123456;//非法,超出了short的表示范围
- 强制类型转换
有可能出现损失的情况,用()里面的类型表示想要转换的目标类型。
double x=3.14;
int nx=(int)x;//强制转换为int ,丢掉小数部分,不会四舍五入,值为3;
- 基本类型转换时常见的错误和问题
操作比较大的数时,要留意是否有溢出,尤其是整数操作时。
int money=1000000000;//10亿
int year=10;
int total=money*year;
System.out.println("total="+total);//返回的total值为负数,int范围是正负21亿,超过了这个范围,因此结果会转为int值,再转为long值,发生数据丢失
//怎么处理
long total=money*(long)year;//第一种,强制转换;
long total=1L*money*year;//1L为long类型,即把整个表达式转换为long类型;
- 获取键盘输入
import java.util.Scanner;
public class main{
public static void main(String[] args){
Scanner a=new Scanner(System.in);
int b=a.nextInt();//把键盘输入的数赋值给b
System.out.println(b);
}
}