常量与变量
常量
变量
1.+ (正),-(负),+,-,i++,++i,i--,--i,*(乘),/(除),% (取余)
注意:
1:i++(先运算,再在1) ++i(先加1,再运算) i--,--i同理。
2:/(除)除数不能为0,不然会报出异常。
3:%(取余)除数不能为0.
2.赋值运算符(=,+=,-=,*=,/=,%=)
int i = 0;
i = i + 5;
i += 5; 与上一行代码同样的意思
其他运算符运算方式类似
3.比较运算符(关系运算符)
== > < >= <= instanceof
注意:
1:区分== 与 = 区别。一个=表示赋值,两个==表示等于
2:4>=3 表达的是4 > 3或者 4 = 3.结果是true。
3:if(i > 1 && i < 10){ } 不能写为:if(1 < i < 10){}
4:逻辑运算符(运算符的两端是boolean值)
例:1 & 2 = 0 (装换为二进制计算)
按位与(&):0 和0 得 0,1 和 0 得 0,1 和 1 得 1
例:1 | 2 = 3 (装换为二进制计算)
按位或(|):0 和0 得 0,1 和 0 得 1,1 和 1 得 1
4.1.按位与(&)和短路与(&&)区别:
&:不管左边是true还是false,右端都会继续运算
(可以理解为并且)&&:当左边false时,右端不再进行运算
4.2.按位或(|)和短路或(||):
|:当左边为true时,右端继续运算
(可以理解为或者)||:当左端为true时,右端不再继续运算
5.位运算符(两端是数值类型的数据)
<< 左移 >>右移 >>>无符号右移
6.三目运算符
格式:
(条件表达式)? 表达式1 : 表达式2;
1:条件表达式,true,false,或者是一个能返回true/false的方法
2:表达式1,可以是任何数据类型
3:如果条件表达式得到的结果是true,最终的表达式就是表达式1
4:如果条件表达式得到的结果是false,最终的表达式就是表达式2
7.java关键字,标识符,命名规则,命名规范
关键字:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)
标识符:凡是自己可以起名字的地方都叫标识符
命名的规则:(一定要遵守,不遵守就会报编译的错误)
由26个英文字母大小写,0-9 ,_或 $ 组成
数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格。
Java中的名称命名规范:(不遵守,也不会出现编译的错误)
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
8.一维数组
数组:相同数据类型的数据的组合。
8.1数组初始化
int[] a = new int[]{2,1,5}; //静态初始化:在声明并初始化数组与给数组相应的元素赋值操作同时进行。
int i2[] = new int[3]; //动态初始化:在声明并初始化数组与给数组相应的元素赋值操作分开进行。
a2[0] = 2;
a2[1] = 1;
a2[2] = 5;
8.2遍历数组方法一
for(int i = 0;i < a.length ;i++){
System.out.println(a[i]);
}
8.3遍历数组方法二
for(int item : a){ //for each item是存放i的数组长度,他们必须是一样的类型,存放的也必须是一致的。
System.out.println(item);
}
9.二维数组
int[][] a = new int[][] {1,2,5,6} //静态初始化:在声明并初始化数组与给数组相应的元素赋值操作同时进行。
int[][] a = new int[2][2]; //动态初始化:在声明并初始化数组与给数组相应的元素赋值操作分开进行。
a[0][0] = 1;
a[0][1] = 2;
a[1][0] = 5;
a[1][1] = 6;
9.1遍历二维数组方法一
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
System.out.println(a[i][j]);
}
}
9.2遍历二维数组方法二
for(int item : a){ //a是二维数组,item是一维数组 必须对应相同的变量
for(int i : item){ //i不是下标,是元素 必须对应相同的变量
System.out.println(i);
}
}
10.类,对象,方法,变量。
1.类的组成成分:
1)属性(成员变量,Field)
2)方法(成员方法,函数,Method)
1.1属性:
成员变量 vs 局部变量
相同点:1.遵循变量声明的格式: 数据类型 变量名 = 初始化值
2.都有作用域
不同点:1.声明的位置的不同 :成员变量:声明在类里,方法外
局部变量:声明在方法内,方法的形参部分,代码块内
2.成员变量的修饰符有四个:public private protected 缺省
局部变量没有修饰符,与所在的方法修饰符相同。
3.初始化值:一定会有初始化值。
class类里面定义的变量也是成员变量
成员变量:可以不初始化赋值,不同数据类型会有不同的默认初始化值。
byte short int long ==>0
float double ==>0.0
char ==>空格
boolean ==>false
引用类型变量==>null
局部变量:一定要显式的赋值。(局部变量没有默认初始化值)
4.二者在内存中存放的位置不同:成员变量存在于堆空间中;局部变量:栈空间中
实例变量跟类变量都是成员变量里面的,但是区分了动态变量跟静态变量
实例变量(动态变量) 需要new创建一个对象才能调用
static类变量(静态变量) 不需要new创建一个对象就能调用
总结:关于变量的分类:1)按照数据类型的不同:基本数据类型(8种) & 引用数据类型(数组,接口,类)
2)按照声明的位置的不同:成员变量 & 局部变量
1.2 方法:提供某种功能的实现
1)实例:public void eat(){//方法体}
public String getName(){}
public void setName(String n){}
格式:权限修饰符 返回值类型(void:无返回值/具体的返回值) 方法名(形参){}
2)关于返回值类型:void:表明此方法不需要返回值
有返回值的方法:在方法的最后一定有return + 返回值类型对应的变量
记忆:void 与return不可以同时出现一个方法内。像一对“冤家”。
3)方法内可以调用本类的其他方法或属性,但是不能在方法内再定义方法!
2.类的初始化的内存解析
2.1 内存划分的结构:
栈(stack):局部变量 、对象的引用名、数组的引用名
堆(heap):new 出来的“东西”(如:对象的实体,数组的实体),含成员变量
方法区:含字符串常量
静态域:声明为static的变量
11.final修饰局部变量和成员变量(不能修改)
12.变量的可访问性