变量就是系统为程序分配的一块内存单元,用于存储各种类型的数据,由于该存储单元的数据可以发生变化,所以被称为变量
变量分类
按所属的数据类型分类:
基本数据类型
引用数据类型
按被声明的位置划分:
局部变量:
成员变量:
Tips:类的外面不能有变量的声明
类型 | 占用内存(字节) | 取值范围 | 默认值 |
---|---|---|---|
布尔(boolean) | 1 | true or false | false |
字节(byte) | 1 | -128 ~ 127 | 0 |
短整型(short) | 2 | -32768 ~ 32767 | 0 |
字符(char) | 2 | ‘ \u0000 - u\ffff ’ | ‘\u0000 ’ |
整形(int) | 4 | -2,147,483,648 ~ 2,147,483,647 | 0 |
长整型(long) | 8 | -9,223,372,036,854,775,808L ~ 9,223,372,036,854,775,807L | 0 |
单精度浮点型(float) | 4 | -3.40292347E+38~3.40292347E+38 | 0.0f |
双精度浮点型(double) | 8 | -1.79769313486231570E+308-1.79769313486231570E+308 | 0.0d |
Java对对包,类,方法,参数和变量等要素命名时使用的字符序列称为标识符。
规则
(1)不能以数字开头
(2)由数字,字母,下划线_和美元符号$构成
(3)长度无限制
(4)不能是Java中的关键保留字
(5)区分大小写
Tips:标识符命名习惯:见名知意
boolean类型不能转化成任何其他数据类型
自动转换类型:容量小的类型自动转换成容量大的类型
Byte,short,int>float>long>double
Byte,short,int不会互相转化,他们三者在计算时会转化成int类型
强制类型转换:容量大的类型转换成容量小的数据类型时,要加上牵制转换符
. Example:
llong i = 100L;
int i = (int)t;
强制类型转换与变量的具体数值无关,只与变量的类型有关
概念:
方法用于封装一段特定的逻辑功能。
方法的主要要素有:前线修饰符,方法名,参数列表和返回值。
. 格式
权限修饰符\访问权限 | 类 | 包 | 子类 | 全部 |
---|---|---|---|---|
public | v | v | v | v |
protected | v | v | v | x |
friendly(默认(default)) | v | v | x | x |
private | v | x | x | x |
返回值详解:
参数列表详解:
int i = 8;
i = i++;
System.out.println(i);
结果:i = 8;
int i = 8;
i = ++i;
System.out.println(i);
结果:i = 9;
当自增运算在前时,程序会先进行自增运算,并将结果赋值给变量,然后再读取变量中的内容进行操作,此时程序操作的变量的值是自增后的值。
当自增运算在后时,程序会先读取变量的值,再进行自增运算,此时程序操作的变量的值是自增前的值
关系运算符作用是比较两边的操作数,结果总是 boolean 型的。
逻辑运算符用于对 boolean型结果的表达式进行运算,运算结果总是 boolean 型。
当“+”链接的是字符串时,他就成了字符串连接符
当“+”连接的一端有字符串时,就会自动将结果变为字符串
int i = 10;;
String s = "10";
System.out.println(i + s);
结果为:(String)1010
X ? Y : Z
任何简单或复杂的算法都可以由顺序结构,分支结构和循环结构三种基本结构组成-
他们的共同点是都包含一个入口和出口,他们的每个代码都有机会被执行不会出现死循环。
顺序结构是一种基本的控制结构,他按照 语句出现的顺序 执行操作
分支结构又被称为选择结构,根据条件成立与否 来执行操作
If条件结构是根据条件判断之后在进行处理
if(输入返回值为boolean类型的判断语句){
}else if{
}else {
}
if-else语句可以嵌套和连续使用
if语句适用于取值不确定的判定(即有关范围的判断)
switch(表达式){
case 取值一 : 语句块一; break;
case 取值二 : 语句块二; break;
Default :语句块n+1; break;
}
Switch语句相关规则:
Example(判断季节):
switch (text) {
case "1" :
case "2" :
case "3" :
System.out.println("春季");
break ;
case "4" :
case "5" :
case "6" :
System.out.println("夏季");
break ;
case "7" :
case "8" :
case "9" :
System.out.println("秋季");
break ;
case "10" :
case "11" :
case "12" :
System.out.println("冬季");
break ;
default :
System.out.println("你输入的月份不正确,请重新输入");
break ;
}
循环结构是一种重复结构,如果条件成立他会重复执行某一循环体,直到出现不满足的条件为止
循环语句功能:
在循环条件满足的情况下,反复执行特定代码循环语句分类
常用的循环语句
语法:
for(初始化参数;判断条件 ;更新循环变量){
循环体;
}
应用举例
public class ForLoop {
public static void main(String [] args){
int result = 0;
for(int i=1; i<=100; i++) {
result += i;
}
System.out.println("result=" + result);
}
}
for循环适用于循环次数已经确定时使用
符合条件,循环继续执行;否则,循环退出特点:先判断,再执行
语法:
while(条件表达式){
//语句块;
}
while循环适用于循环次数不确定时使用
先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出特点:先执行,再判断
语法:
do {
循环操作
}while ( 条件表达式 );
do-while循环适用于某些需要提前进行一次操作时使用
while 循环和 do-while 循环的区别?
break和continue都可以退出循环
break和continue的区别:
for(int i = 0;i<10;i++) {
for(int j = 0;j<10;j++) {
if(j == 9) {
break;
}
System.out.print(i +""+ j + "\t");
}
System.out.println();
}
由于j=9时,内层循环退出,不再打印数字,于是就干掉了个位为9的数
00 01 02 03 04 05 06 07 08
10 11 12 13 14 15 16 17 18
20 21 22 23 24 25 26 27 28
30 31 32 33 34 35 36 37 38
40 41 42 43 44 45 46 47 48
50 51 52 53 54 55 56 57 58
60 61 62 63 64 65 66 67 68
70 71 72 73 74 75 76 77 78
80 81 82 83 84 85 86 87 88
90 91 92 93 94 95 96 97 98
概念
创建格式
格式 1. 数据类型[] 数组名称 = new 数据类型[数组长度];
格式 2. 数据类型[] 数组名称 = {数组内容 1,数组内容 2,数组内容 3...数组内容 n};
格式 3. 数据类型[] 数组名;
格式 3 属于只创建了数组引用名, 并未在内存创建数组空间。
格式 4. 数据类型[] 数组名称 = new 数据类型[]{内容 1,内容 2,内容 3...内容 n];
Example:
格式1:int[] nums = new int[10];
格式2:int[] nums = {1,2,3,4,5,6,7,8,9,0};
格式3:int[] nums;
格式4:int[] a = new int[] {1,2,3,4,5,6,7,8,9,0};
下标
可以理解为数组中内容的数字序号,从 0 开始 ,对于长度为 n 的数组,下标的范围是 0 ~ n-1。可以通过下标的方式访问数组中的每一个元素。
以上述格式2为例:
nums[0] = 1;
nums[9] = 1o:
数组长度获取
数组名称.length;
注意
使用数组不当, 会出现如下问题:
原理:
名字由来:
是因为最小(或最大)的元素会经由交换慢慢“浮”到数列的顶端(降序或升序),就如同水中的气泡最 终会上浮到顶端一样,故名“冒泡排序”。
升序排列的口诀:
N个数字来排队两两相比小靠前,
外层 循环length-1 内层循环length-i-1
降序排序的口诀:
N个数字来排队两两相比大靠前,
外层 循环length-1 内层循环length-i-1
概念
重复以上过程,直到找到满足条件的数据,则表示查找成功, 直到子数组不存在为止,表示查找不成功。