1.变量
变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据。由于该存储单元中的数据可以发生改变,因此得名为"变量"。
1.1变量分类
1.1.1按所属的数据类型划分
基本数据类型变量
引用数据类型变量
1.1.2按被声明的位置划分
局部变量:方法或语句块内部定义的变量
成员变量:方法外部、类的内部定义的变量
Ps:类的外面不能有变量的声明
1.2 数据类型
由于变量记录的数据内容大小不同,导致所需的存储单元大小不同,在Java语言中使用数据类型的概念加以 描述.
字节是计算机信息技术用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串,是构成信息的一个小单位。Java 中的字节是八位的字节,即它包含八位的二进制数。
八大基本类型
类型 | 占用内存 | 值范围 | 默认值 |
---|---|---|---|
整数型(int) | 4字节 | -2 147 483 648 ~ 2 147 483 647(稍大于 20 亿) | 0 |
浮点型(float) | 4字节 | -3.40292347E+38-3.40292347E+38 | 0.0f |
短整数型(short) | 2字节 | 32768-32767 | 0 |
长整数型(long) | 8字节 | -9 223 372 036 854 775 808L ~ 9 223 372 036 854 775 807L | 0 |
字节型(byte) | 1字节 | -128-127 | 0 |
双精度型(double) | 8字节 | -1.79769313486231570E+308-1.79769313486231570E+308 | 0.0d |
布尔型(boolean) | 1字节 | True或flase | Flase |
字符型(char) | 2字节 | \u0000-\ufff | \u0000 |
1.3标识符
Java对包、类、方法、参数和变量等要素命名时使用的字符序列称为标识符。规则如下: l 由字母、数字、下划线(_)和美元符号($)组成。
不能以数字开头。 l
区分大小。 l
长度无限制。 l
不能是Java中的保留关键字。
1.4类型转换
boolean类型不能转换成任何其它数据类型。
1.4.1自动类型转换
容量小的类型自动转换成容量大的数据类型 byte,short,int->float->long->double byte,short,int不会互相转换,它们三者在计算时会转换成int类型
1.4.2强制类型转换
容量大的类型转换成容量小的数据类型时,要加上强制转换符 longl=100L; inti=(int)l; 有可能造成精度降低或数据溢出,使用时要小心。
1.5关键字大全
1.6二进制
计算机中信息的存储单位 位(Bit) :
表示一个二进制数码0或1,是计算机存储处理信息的最基本的单位。
字节(Byte) :
一个字节由8个位组成。它表示作为一个完整处理单位的8个二进制数码。
1.6.1补码(符号位+数值)
在计算机中,计算机以补码形式标识。
一个正数的补码和其原码相同
负数的补码,数值位取反,末位加一。
主要原因:
使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最 高位(符号位)有进位,则进位被舍弃。
1.6.2进制之间的互换
二进制和十进制之间的互换
按权相加:
把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。
例:原码1011.01=1×23+0×22+1×21+1×20+0×2-1+1×2-2 =8+0+2+1+0+0.25 =11.25
十进制转换成二进制
整数部分:"除2取余,逆序排列"法
小数部分:"乘2取整,顺序排列"法
十六进制
二进制表示法太冗长,所以在程序中一般喜欢用十六进制。
基数为十六,逢十六进一。
它用abcdef表示从0-9之上的值。
Java中十六进制数据要以0x或0X开头。如:0x23D
八进制:基数为八。
Java中八进制数据要以0开头。如:0123
1.7 方法
1.7.1概述
方法用于封装一段特定的逻辑功能。方法的主要要素有:权限修饰符方法名、参数列表和返回值。
1.7.2格式
权限修饰符 返回值类型 声明方法名称(小写字母) (参数列表)
{ 方法中封装的逻辑功能; return返回值; }
1.7.3权限修饰符详解
1.7.4返回值详解
方法调用结束后可以返回一个数据,称之为返回值。
方法在声明时必须指定返回值的类型。
通过return语句返回,return语句的作用在于结束方法且将数据返回。
如果方法没有返回值(即方法不需要返回数据),需将返回值类型声明为void。
1.7.5参数列表详解
方法的参数列表:在调用时传递给方法,需要被方法处理的数据。
在方法定义时,需要声明该方法所需要的参数变量。
在方法调用时,会将实际参数值传递给方法的参数变量。
必须保证传递参数的类型和个数符合方法的声明。
1.7.6 方法示例
public void say(int a,int b){
System.out.println("方法say正在执行");
}
2.运算符
2.1算数运算符
++:如果是变量前缀:先对此变量加1,再执行其他的操作。
如果是变量后缀:先执行当前语句的其他操作,再对此变量加
–: 如果是变量前缀:先对此变量减1,再执行其他的操作。
如果是变量后缀:先执行当前语句的其他操作,再对此变量减1
System.out.println(”++1”);先执行++1,再打印。
public class Demo1 {
public static void main(String[] args) {
int a = 5;
int b = 5;
System.out.println(++a);//输出结果6
System.out.println(b++);//输出结果5
}
}
2.2赋值运算符
2.3关系运算符
2.4.逻辑运算符
&&与&,||与|的区别
&&,||:当左边表达式为false时,不再进行右边表达式的运算
2.5字符串连接运算符
Strings=“He”+“llo”; 结果"Hello" "+"除了可用于字符串相连接,也能将字符串与其它的数据类型相连成一个新的字符串。
如:Strings=“x”+123; 结果"x123"
2.6三目运算符
X?Y:Z X为boolean类型表达式,先计算x的值,若为true,整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。
例: intscore=75; Stringtype=score>=60?“及格”:“不及格”;
2.7操作符优先级(了解)
2.8转义字符
3.一些小问题
3.1变量的定义
3.3.1当定义一个整数时,默认为int
byte b = 129;//会报错,默认数字为int,需要强制类型转换
byte b = (byte)129;
long c = 160000000000;//会报错,整数默认为int
long c = 160000000000l;//long类型的定义
3.3.2当定义一个小数时,默认为double
float d = 0.3;//会报错,默认数字为int,需要强制类型转换
float d = 0.3f;
或
float d = (float)0.3;
3.2 a+=5与a=a+5的区别
a+=5相当与a=a+5;但这里的5是a的类型,而不是默认的int
a=a+5;5是int
public class Demo2 {
public static void main(String[] args) {
byte a = 5;
a+=5;
System.out.println(a);//输出结果为10
byte b = 5;
b= (byte) (b+5);//报错强转成byte
System.out.println(a);
}
}
3.3byte值域问题
byte的值从-128-127,但在不超过int的范围都可以进行强制类型转换,当超过127时,从-128开始循环
public class Paper {
public static void main(String[] args) {
//超过int的范围,报
// byte a = (byte) 160000000000;
byte a = (byte) 1600000;
System.out.println(a);//输出结果为0
}
}
3.4char的定义问题
public class Paper {
public static void main(String[] args) {
//char c1 = 'AA' //报错char类型只能存储一个字符
char c1 = 'a';
//输出结果为97,返回A的ASCII码值
System.out.println((int) c1);
char c1 = 97;
//输出结果为a,返回在ascii码表中的97对应的字符
System.out.println(c1);
}
}
附录ASCII码表(部分)