java_基础2-3

前面我们谈到了一些语言基础和运算基础
java语言基础与运算基础
接下来我们谈一下一些简单语句
if——else 语句

三种if语句格式
第一种:

if
int a=10;
 if(a>5){
System.out.println("a is big");

第二种

if-else
if(a<5){
System.out.println("a is small");
}
else{
System.out.println("a is big");
}

第三种

if else if else
int m=4;
if(m=1){
System.out.println("一月")
}
else if (m=2){
System.out.println("二月")
}
else if(m=3){
System.out.println("三月“)
}
else if(m=4){
System.out.println("四月")
}




break continue语句
在这里插入图片描述

break:结束后面所有语句但是范围在{}中
continue:结束当前循环进入下一次循环
while(){
if() break
}//结束所有此语句不进入下一次循环了
while(){
if()continue;
}//结束当前循环进入下一次循环,不结束当前所有语句


switch语句在这里插入图片描述
语句:
在这里插入图片描述

class SwitchDemo2{
public static void main(String[] args){
int a =2;
int season = (a-1)/3;
if(a<1||a>12){
System.out.println("非法月份");
}else{
switch(season){
//多个条件进行罗列
case 0:
  System.out.println("春天");
  //中断switch语句
  break;
  case 1:
  System.out.println("夏天");
  break;
  }
  }
  }

return
返回语句,带着返回值
rerurn+随便一个语句,会出现错误,在return就返回了,后面的语句为不可达代码
除非
if() return;
条件成立时才执行,不成立时仍执行后面的语句;所以return 一般与if连用
循环
在这里插入图片描述
while

while(boolean){
.....
}
class WhileDeom1{
 public static void main (String[] args){
 int i=0;
 while(i<10){
 System.out.println(i);
 i++;
 }
 }
 }

注意:while(1){}
死循环,如何让他结束呢
在while(1){
if() break;
}

do_while

do{
System.out.println(i);
i++;
}while(i<10);

//有人这里就有疑问了;不是说do——while 比 while 多一次吗:
小编告诉你:只有进来时条件就不成立时do——while才会多一次;
do_while先语句输出在判断,所以条件第一次输出时条件不影响

给大家出个问题:打印一个直角三角形用“*”,不会的话看下面的代码哦

class TriangleDemo{
public static void main (String[] args){
int n=10;
int i=1;
//行循环
while(i<=10){
//输出整个一行
int j=1;
while(j<=i){
System.out.print("*");
j++;
}
i++;
System.out.println();
		}
	}
}

用循环写9*9乘法表

class NineNine{
public static void main (String[] args){
 int line=9;
 int row=1;
 //行循环
 while(row<=9){
 //列循环
 int col=1;
   while(col<=row){
   System.out.print(col + "x"+ row+"+"+(col*row)+"\t");
   col++;
   }
   System.out.println();
   row++;
   		}
   	}
   }

for 循环
在这里插入图片描述

class For{
  public static void main(String[]agrs){
  for(int i=0;i<10;i++){
 System.out.println(i);
 }
 //for 与continue的连用
 for(;;){
 i++;
 if(i%5==0){
 continue;
 }
  else{
  System.out,println(i);}
  		}
  	}
  	//continue;停止当前循环进行下一次循环
break;停止所有

简单语句结束了,接下来来点难得了
函数
定义,特点,应用,重载在这里插入图片描述
在这里插入图片描述
调用函数

//编辑好的函数
public static int add(int x,int y)
{
 //int res = x+y;
 return x+y;}
 //后续调用
 int c=add(a,b);
 System.out.println(c);

求函数最大值

//函数
public static int max (int a,int b,int c){
 int max =a>b? a:b;
 max=max>c?max:c;
        return max;}
 //jiecheng
  public static int fabric (int n){
 if(n<=0){
 return -1;
 }
 int res =1;
 for(int i=1;i<=n;i++){
 res = res *i;}
 return res;}

递归

public static int DiGui(int n)
{  if(n==1)
 return 1;
 return n*DiGui(n-1);
}

函数重载overload

//求函数最大值三个
 public static int max (int a,int b,int c){
 int max =a>b? a:b;
 max=max>c?max:c;
        return max;}
//求函数最大值两个
 public static int max (int a,int b){
 int max =a>b? a:b;
        return max;}
  //只有参数的表现形式不同,其他的都一样;
//只有这样系统才能分辨要调用哪个函数
//那参数的类型不同可不可以?
public static int max(double a,int b,int c){
return (int)a+b+c;}
 //是重载

数组
在这里插入图片描述
函数格式
修饰符 返回值类型 函数名(类型1,名称1,…){
//函数体

return;

//数组
数组:
下标以0位基地址;
 //类型[]变量名=new 类型[]
        int [] fun=new int [10]; 
        //lenth是属性,不是方法不带括号
        System.out.println(fun.;lenth);
//
        System.out.println(a[0]);
//定义的时候直接初始化
     int arr2[]=new int[]{1,2,3}
   数组边界:下标值超过给定的边界值
   索引越界:java.lang.ArrayIndexOutOfBoudsException
//空指针异常java.lang.NullPointerException
  int [] arr3=null;
  System.out.println(arr3.lenth);
  P=&x;//取内存地址——c语言中
  java没有指针——没有显示的指针操作,java中引用就是指针
  指针就是对象的内存地址
  null 对象不存在,不能访问属性方法

null和l数组越界
在这里插入图片描述
堆栈
stack:栈
heap:堆
每一个整形占四个字节;

在这里插入图片描述
辨别a[o]和null
a[0],长度是零,只有一个地址,一条线;null连地址都没有,啥都没有;
null 对象不存在,不能访问属性方法
//所以访问时的顺序
int [] arr5=new int [20];
if(ar r== null || arr.length==0)
如果if里面的倒过来:倒过来的话先去访问对象的属性了,结果对象根本不存在,就短路了
所以:先判断空(先判断存不存在在判断里面有没有东西)

for(arr!==null||arr.length>0){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");

注意:

int []arr7=new int[0];
System.out.println(arr[0]);

!一定是错的,就是一个地址一条线,根本没空间存东西;会出现数组越界
数组操作常见问题:
一:提取数组元素的最大值

public static int max(int[] arr){
if(arr==null||arr.length==0){
 return -1;}
int max =arr[0];
 for(int i=1;i<arr.length;i++){
 max>arr[i]?max:arr[i];
     }
 return max;}

内存结构
在这里插入图片描述
二:数组排序(选择排序,冒泡排序)
冒泡排序

//倒着来
class Bubble{
public static void main(String[]args){
 int []arr={3,1,2,5}
 for(i=arr.length-1;i>0;i--){
 for(int j=0;j<i;j++){
 if(arr[j]>arr[j+1]{
int temp=arr[j];
arr[j]=arr[j+1]
arr[j+1]=temp;
}
}
}//迭代打印增强for循环
for(int ii:arr){
System.out.print(ii+" ");
}
}
}

选择排序

for(int i =0;i<arr.length;i++)
 {
  for(int j=i+1;j<arr.length;j++){
  if(arr[i]>a[j})
  {
  int temp;
  temp=arr[i];
  a[i]=a[j];
  a[j]=temp;
	 }
   }
}
//增强for循环
 for(int i:arr){
  System.out.print(i+" ")
       }
   }
}

  

折半查找
折半查找在有序的数列中,进行二分法查找,每次取出搜索范围的中间
值进行比较,依次再进行范围的缩小,直到找到所需要的值
(二分法)找7
1 3 5 7 9
长度5 5/2=2;所以中间的值是arr[2];
五个元素中间的值是5;
第一次全数组查找[0-4]
找到中间数值arr[2]=5;
因为7比5大;所以
第二次寻找[3-4]
3-4的中间值是:(索引的中间值)(3+4)/2;
所以折半查找上去砍一半,然后一直砍
在哪边哪边的值不变
eg:
//1 12 33 44 60 88 97 100;
寻找数字1;
[0-7]–>arr[3]=(44)
[0-2]–>arr[1]=(12)
[0-0]–>arr[0]=(1)
//1 2 3 4 5 6 7 8 9 10
[0-9]->4(5<7)
[5,9]->7(8>7)
[5,6]->5(6<7)
[6,6]-6(7)
最大范围最小范围到一个值
//[0-9]->4(5<7.5)
[5,9]->7(8>7.5)
[5,6]->5(6<7.5)
[6,6]-6(7<7.5)
这样仍不存在的话就可以结束语句了;

lass HalfFind{
  public  static void main(Strng[] args){
 int [] arr={3,5,8,9,12,34,56};
 int min =0;
 int max =arr.length-1;
 int num=8;
 int index = -1;如果找不到就把 -1;输出;
 while(min<=max){
 int mid =(min+max)/2;
        //找到了
 if(arr[mid]==num){
 index =mid;
        break;}
 //范围落在左半边
 else if(arr[mid]>num){
  max=mid-1;
 }//落在右半边
 else{
  min=mid+1;
		  }
	  }
  System.out.println(index)
     
 }
}
 

二维数组
在这里插入图片描述

在这里插入图片描述

class TwoDimensionArray{
 public static void main(String [] args){
        int no=1;
 for(int i=0;i<arr.length;i++){
  for(int j=0;j<3;j++){
       arr[i][j]=no;
  no ++;
  }
 }
}
public static void main outArr(int [][] arr){
 for(int i=0;i<arr.length;i++){ 
  for(int j=0;j<arr[i].length;j++){
 System.out.println(arr[i][j]+" ");
 		}
System.out.println();
  }
 }
}

初始化int [] [] arr={{1,2},{2,3},{5,6}};
在这里插入图片描述
int [] [] arr={{1},{1,2},{1,2,3},{1,2,3,4}};
在这里插入图片描述

       `int [] [] arr2=new int [3][];
       arr2[0]=bew int []{1,2,3};
        arr2[1]=bew int []{4,5,6};
        arr2[2]=bew int []{7,8,9};

三维数组
在这里插入图片描述

int [] [] [] arr={
{
   {1,2,3},
   {4,5,6},
   {7.8.9}
   },
   {
   {10,11,12},
   {13,14,15},
   {16,17,18}
   },
   {
   {19,20,21},
   {22,23,24},
   {25,26,27}
   }
   }
   for(int i=0;i<arr.length;i++){
 for(int j=0;j<arr[i].length;j++){
 for(int k=0;k<arr[i][j].length;k++){
  System.out.print(arr[i][j][k]+" ");
  }
          System.out.println();
    }
          System.out.print();
 } 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NoteLoopy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值