计算机内存
内存的作用主要是用来平衡CPU的处理速度和硬盘的读取速度。
一块正常的机械硬盘连续读取速度是100M/s。而CPU的处理速度远远超过这个速度。所以如果没有内存的参与,可能会产生硬盘全力读取,CPU却一直空闲的状态。
内存只能临时存储数据
变量
基本数据类型
类型 | 占用空间 | 取值范围 | 默认值 | 备注 |
---|---|---|---|---|
byte | 1字节 | -128~-127 | 0 | |
short | 2字节 | -215~215-1 | 0 | |
int | 4字节 | -231~231-1 | 0 | |
long | 8字节 | -263~263-1 | 0L | 必须写L |
float | 2字节 | -3.403E38~3.403E38 | 0.0F | 必须写F |
double | 8字节 | -1.798E308~1.798E308 | 0.0D | |
char | 2字节 | 0~65535 | \u0000 | |
boolean | 1字节 | ture/false | 布尔型 |
变量在内存中的存储
需要先向内存堆申请一块空间,这块空间的申请必须注明数据类型,再定义一个标识符,表示我们通过这个标识去寻找这块空间,申请空间后进行赋值
int num = 8;
System.out.println(num);
这段代码中,int 表示要存储的数据类型是整数类型,num 表示标识符,=表示要将右边的数据存放在左边的变量中。
命名规范
- 变量一般用英文单词表示,首字母小写,遵循驼峰命名规范(变量的名称可以包含字母、数字、下划线、美元符号,但不能以数字开头)。
- 不能用java的关键字做变量名,idea里面有颜色的一般都是关键字 (变量的名称不能是Java中的关键字和保留字,但可以包含关键字和保留字。)
- 变量的名称是严格区分大小写的。
- 变量的名称尽量做到见名知意。
运算符
运算符优先级:()>!>算数运算符>比较运算符>&&>|| >赋值运算符
赋值运算符
=
int num = 8;
= 赋值运算符: =的左边是变量, =的右边是数据 (将右边的值赋值给左边的变量)。
算数运算符
+、-、*、/、%
public class Demo {
/**
+、-、*、/、%
*/
public static void main(String[] args) {
int num1 = 10;
int num2 = 3;
System.out.println(num1+num2);//结果13
System.out.println(num1-num2);//结果7
System.out.println(num1*num2);//结果30
System.out.println(num1/num2);//结果3
System.out.println(num1%num2);//结果1
System.out.println(1%3);//结果1
}
}
+比较特殊,在几个数字的运算中,+扮演了“加”的角色。
在字符串中却扮演了“连接”的角色。+ 做拼接的时候 , 字符串和任何类型拼接,都是字符串
++、–
public class Demo {
/**
++ -- 自身增加/减少1
如果一行代码里面只用++或者--,那么无论++在前还是在后,结果都是一样的。
如果一行代码里面既有++又有输出语句,那么++在前,先自增1,再输出;++在后,先输出,再自增1。
*/
public static void main(String[] args) {
int num1 = 10;
System.out.println(num1++);//结果10
System.out.println(++num1);//结果12
}
}
+=、-=、*=、/=、%=
public class Demo {
/**
+=、-=、*=、/=、%=
*/
public static void main(String[] args) {
// a += b; // a = a + b;
// a -= b; // a = a - b;
// a *= b; // a = a * b;
// a /= b; // a = a / b;
// a %= b; // a = a % b;
int num = 3;
num += 5;
System.out.println(num5);//结果8
}
}
比较运算符
比较运算符的结果是一个boolean类型
<、>、<=、>=
public class Demo {
public static void main(String[] args) {
/*
<、>、<=、>=
*/
int num1 = 8;
int num2 = 16;
System.out.println(num1<num2);//结果为true
System.out.println(num1>num2);//结果为false
System.out.println(num1<=num2);//结果为true
System.out.println(num1>=num2);//结果为false
}
}
==、!=、
public class Demo {
public static void main(String[] args) {
/*
==、!=
*/
int num1 = 8;
int num2 = 16;
System.out.println(num1==num2);//结果为false
System.out.println(num1!=num2);//结果为true
}
}
注意:单个=是赋值运算符,两个==才是比较。
.eqals
用于比较引用数据类型的值,一般用来比较字符串
public class Demo {
public static void main(String[] args) {
/*
.equals专门用来判断两个字符串的值是否相等
*/
String str1 = "乔治";
String str2 = "乔治";
System.out.println(str1.equals(str2));//结果为true
}
}
==用来判断基本数据类型是否相等,而String属于引用数据类型.
逻辑运算符
逻辑运算符的结果是一个boolean类型
&、|、!、&&、||
运算符 | 用法 | 作用 |
---|---|---|
&&、& | num1>num2&&num1<10 | 与,前后条件同时true,则true |
||、| | num1==5||num1<10 | 或,前后条件同时false,则false |
! | !(num1>10) | 非,除了表达式的情况之外为true |
运算符 | 区别 |
---|---|
&&、& | &按位与,要依次判断前后表达式结果,&&逻辑与,左边为false就为false |
||、| | |按位或,要依次判断前后表达式结果,||逻辑或,左边为true就为true |
三目运算
表达式?结果1:结果2;
public class Demo {
public static void main(String[] args) {
/*
表达式?结果1:结果2;
*/
String str1 = "乔治";
String str2 = "佩奇";
int num1 = str1.equals(str2) ? 521 : 666;
System.out.println(num1);//结果为666
}
}
?是三目运算符,当表达式结果为true,则执行?后面的代码;当表达式结果为false,则执行:后面的代码。