1.数组
2.数组的常见操作
<span style="font-size:18px">public class Demo1 {
public static void main(String[] args) {
int[] arr = {67,54,32,123,19};
//正向遍历
for (int i = 0; i < arr.length; i++) {
System.out.println("arr["+i+"]="+arr[i]);
}
//反向遍历
for (int i = arr.length-1; i >= 0; i--) {
System.out.println("arr["+i+"]="+arr[i]);
}
}
}
</span>
<span style="font-size:18px">public class ZuiZhi {
public static void main(String[] args) {
int[] arr = {67,54,32,123,19};
int max = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] > arr[max]) {
max = i;
}
System.out.println("该数组最大值为:" + arr[max]);
}
}
}
</span>
<span style="font-size:18px">public class Demo2 {
public static void main(String[] args) {
int[] arr = { 67, 54, 32, 123, 19 };
// selectSort(arr);
selectSort2(arr);
for (int j = 0; j < arr.length; j++) {
System.out.println("arr[" + j + "]=" + arr[j]);
}
}
// 选择排序,效率更高 </span>
<span style="font-size:18px">public static void selectSort2(int[] arr) {
// 思路二:外圈每次循环记住某位置,与后续的元素比较,全部比较完之后记住内圈得到的最小元素及其角标,再交换,这样不用每次比较都要交换 for (int i = 0; i < arr.length - 1; i++) {
int num = arr[i];
int index = i;
for (int j = i + 1; j < arr.length; j++) {
if (num > arr[j]) {
num = arr[j];
index = j;
}
}
if (index != i) {//防止跟自己交换位置,没意义
int temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
}
}
// 选择排序1,
public static void selectSort(int[] arr) {
// 从小到大排列,比较一次,交换一次
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
}
</span>
public class bubbleSort {
public static void main(String[] args) {
int[] arr = { 67, 54, 32, 123, 19 };
bubbleSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
/*
* 冒泡排序:
* -1是伪了避免角标越界
* -x是为了让外循环增加一次,内循环参数与比较的元素个数递减。
*/
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-1-i; j++) {
if (arr[j]>arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
}
public class HalfSearchDemo {
public static void main(String[] args) {
int[] arr = { 19,28,37,46 ,55};
int key = 55; //要查找的数字。
int index = halfSearch(arr,key);
if(index!=-1)
System.out.println(key+"在数组重的位置:"+index);
else
System.out.println("不存在此元素!");
}
public static int halfSearch(int[] arr, int key) {
int min = 0;
int max = arr.length-1;
int mid = (min + max)/2;
//循环查找
while(arr[mid]!=key){
if(arr[mid]>key){
max = mid - 1;
}
else if(arr[mid]<key){
min = mid + 1;
}
if(max<min){
return -1; //不存在此元素
}
mid = (min + max)/2;
}
return mid;
}
}
3.内存划分:
4.局部代码块。
public class Test {
public static void main(String[] args) {
/*
* 局部代码块:用于限定局部变量的生命周期
* 该例子中num只能在所处的局部代码块中有效。
*/
//局部代码块
{
int num = 3;
System.out.println(num);
}
System.out.println(num);//编译报错
}
}<span style="font-size:18px; color:#ed1c24"><strong></strong></span>
<span style="font-size:18px; color:#ed1c24"><strong>5.数组常见的问题:</strong></span>
//异常
int[] arr = {12,3,65,65};
//访问到不存在的角标时,就会发生角标越界异常
System.out.println(arr[8]);//ArrayIndexOutOfBoundsException
6.函数
7.函数的特点。
8.函数-细节 void
9.函数-重载
/*
函数的重载。
1,同一个类,
2,同名。
3,参数个数不同。or 参数类型不同。
4,函数重载和返回值类型无关。
5,java是严谨性语言,如果函数出现的调用的不确定性,会编译失败。
*/
//加法运算。两个整数的和。
public static int add(int a,int b)
{
return a+b;
}
//加法运算。两个小数的和。
public static double add(double a,double b)
{
return a+b;
}
//加法运算,三个整数的和。
public static int add(int a,int b,int c)
{
return add(a,b)+c;
}