前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2 :基本语法

2 :基本语法

作者头像
六月的雨
发布2018-05-14 10:23:05
7810
发布2018-05-14 10:23:05
举报
文章被收录于专栏:Android开发指南

语法

  • if和switch的区别:

if:

1,对具体的值进行判断。

2,对区间判断。

3,对运算结果是boolean类型的表达式进行判断。

switch:

1,对具体的值进行判断。

2,值的个数通常是固定的。

对于几个固定的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,效率相对高一点。

  • Break和continue的区别

break:跳出。

break作用的范围:要么是switch语句,要么是循环语句。

记住:当break语句单独存在时,下面不要定义其他语句,因为执行不到。

break跳出所在的当前循环。

如果出现了循环嵌套,break想要跳出指定的循环,可以通过标号来完成。

break li

continue:继续。

作用的范围:循环结构。

continue:结束本次循环,继续下次循环。

如果continue单独存在时,下面不要有任何语句,因为执行不到。

For循环嵌套

大圈套小圈思想

for(int x=0; x<4; x++)//外循环控制的是行数

{for(int y=0; y<5; y++)}//内循环控制的是每一行的个数 

代码语言:javascript
复制
for(int x=1; x<=5; x++){for(int y=x; y<=5; y++){System.out.print("*");}System.out.println();}多的朝上for(int x=1; x<=5; x++){for(int y=1; y<=x; y++){System.out.print("*");}System.out.println();}多的朝下

函数

定义函数的格式:

修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,...) { 

   执行语句;

   return 返回值;

 }

特殊情况: 

功能没有具体的返回值,这时return的后面直接用分号结束。 

返回值类型怎么体现呢?因为没有具体值,所以不可以写具体的数据类型。

在java中只能用一个关键字来表示这种情况。关键字是:void.

总结:没有具体返回值时,返回值类型用void来表示。 

注意:如果返回值类型是void,那么函数中的return语句可以省略不写。

需求1: 定义一个功能,完成两个整数的和的获取。

 思路:既然定义功能,就是可以用函数来体现。

  如何定义一个函数呢?

  通过两个明确来完成。

  •  明确一:这个功能的结果是什么?

  是和。是功能的结果,所以该功能的返回值类型是int 。

  其实就是在明确函数的返回值类型。

  • 明确二:这个功能实现过程中是否需要未知内容参与运算? 

  有,加数和被加数。这就是函数的参数列表(参数的个数,参数的类型)

  其实就是在明确参数列表。

 注意:返回值类型和参数类型没有直接关系。

需求2: 定义一个功能,画一个矩形在控制台。

  •  明确一:这个功能的结果是什么?

  没有结果,因为直接打印到了,控制台,并未返回给调用者。

  用void表示。

  •  明确二:这个功能实现过程中是否需要未知内容参与运算?

  有,行和列不确定。两个。整数 int.

需求3: 定义一个功能,比较两个数是否相等。

  •  明确一:这个功能的结果是什么?

   有,boolean.

  •  明确二:这个功能实现过程中是否需要未知内容参与运算?

   有,两个整数。

函数的重载

1,同一个类, 

 2,同名。

 3,参数个数不同。or 参数类型不同。

 4,函数重载和返回值类型无关。

 5,java是严谨性语言,如果函数出现的调用的不确定性,会编译失败。


数组

元素类型[] 数组名 = new 元素类型[元素个数或数组长度];

局部代码块。限定局部变量的生命周期

{   int age = 3;

   System.out.println(age);

  }

int[] arr = new int[3]; 

arr[0] = 89; 

for(int x=0; x<3; x++){System.out.println(arr[x]);}

输出:89、0、0,初始化为零

int[] arr = new int[3]; System.out.println(arr[3]);//ArrayIndexOutOfBoundsException: 当访问到数组中不存在的角标时,就会发生该异常。 arr = null; System.out.println(arr[0]);//NullPointerException 当引用型变量没有任何实体指向时,还在用其操作实体。就会发生该异常。 

内存的划分:

1,寄存器。 相当于Cpu

2,本地方法区。 相当于不同的操作系统,如windows,苹果

3,方法区。存放方法和静态变量,也叫共享数据区,方法调用完毕后从栈内存回到方法区(弹栈)

4,栈内存。

 存储的都是局部变量或者代码块

 而且变量所属的作用域一旦结束,该变量就自动释放。

5,堆内存。 

 存储是数组和对象(其实数组就是对象) 凡是new建立在堆中。

 特点:

 1,每一个实体都有首地址值。

 2,堆内存中的每一个变量都有默认初始化值,根据类型的不同而不同。整数是0,小数0.0或者0.0f,boolean false char '\u0000'

 3,垃圾回收机制。 

格式1

需要一个容器,但是不明确容器的具体数据。 

int[] arr = new int[3]; 

格式2

需要一个容器,存储已知的具体数据。 

元素类型[] 数组名 = new 元素类型[]{元素,元素,……}; 

int[] arr = new int[]{89,34,270,17};

int[] arr = {89,34,270,17};

  对数组操作最基本的动作就是存和取、遍历 

  核心思想:就是对角标的操作。

代码语言:javascript
复制
int[] arr = {89,34,270,17};System.out.println("length:"+arr.length);  for(int x=0; x<arr.length ; x++)  {   System.out.println("arr["+x+"] = "+arr[x]+";");//arr[0] = 89; 角标从小到大  }  for(int x=arr.length-1; x>=0; x--)  {   System.out.println("arr["+x+"] = "+arr[x]+";");//arr[0] = 89; 角标从大到小  }

数组的使用

获取数组中的最大值。

 思路:

 1,需要进行比较。并定义变量记录住每次比较后较大的值。if

 2,对数组中的元素进行遍历取出,和变量中记录的元素进行比较。for

  如果遍历到的元素大于变量中记录的元素,就用变量记录住该大的值。

 3,遍历结果,该变量记录就是最大值。

 定义一个功能来是实现。

 明确一,结果。

   是数组中的元素。int .

 明确二,未知内容。

   数组.

代码语言:javascript
复制
public static void main(String[] args) {		int[] arr = { -12, -13, -54, -24, -56, -34 };		int max = getMax(arr); // max这里可以随便写成其他,只是为了输出		System.out.println("最大值为:" + max);		// System.out.println("最大值为:"+getMax(arr));也可这样	}	public static int getMax(int[] arr) {		// int max=0,不要怎么写		int max = arr[0]; // 定义变量为数组里任何一个任何数都行		for (int x = 1; x < arr.length; x++) { // 如果x=0,和自己比较没什么意义			if (arr[x] > max)				max = arr[x];		}		return max;	}
代码语言:javascript
复制
	// 通过角标获取最大值	private static int getMax2(int[] arr) {		int dex = 0;		for (int i = 1; i < arr.length; i++) {			if (arr[i] > arr[dex]) {				dex = i;			}		}		System.out.println(arr[dex]);		return arr[dex];	}

选择排序

代码语言:javascript
复制
//排完序后需要遍历数组,为了好看点写了下面的方法public static void printArray(int[] arr) {		System.out.print("[");		for (int x = 0; x < arr.length; x++) {			if (x != arr.length - 1)				System.out.print(arr[x] + ", ");			else				System.out.println(arr[x] + "]");		}	}
代码语言:javascript
复制
public static void selectSort(int[] arr) {		for (int x = 0; x < arr.length - 1; x++) {			for (int y = x + 1; y < arr.length; y++) {				if (arr[x] > arr[y]) { // 一个循环替换见图					int temp = arr[x];					arr[x] = arr[y];					arr[y] = temp;				}			}		}	}

这里的的转换也可以定义一个方法

代码语言:javascript
复制
public static void swap(int[] arr,int a,int b) {   int temp = arr[a];  arr[a] = arr[b];  arr[b] = temp; }//然后public static void selectSort(int[] arr) {   for(int x=0; x<arr.length-1; x++) {    for(int y=x+1; y<arr.length; y++) {     if(arr[x]>arr[y]) {         swp(arr,x,y)    }

另一种选择排序,提高性能

 冒泡排序 相邻两个元素相比,arr[0]与arr[1]相比,arr[1]与arr[2]相比........ 最值首先出现在最末尾  

代码语言:javascript
复制
   private static void bubbleSort(int[] arr) {          for (int x = 0; x < arr.length - 1; x++) {  //外圈            for (int y = 0; y < arr.length - x - 1; y++) {// -x:比较元素减少,-1:避免角标越界                  if (arr[y] > arr[y + 1]) {                      int temp = arr[y];                      arr[y] = arr[y + 1];                      arr[y + 1] = temp;                  }              }          }      }  

这只是面试的时候用到,在Java有个工具类就可以排序    Arrays.sort(arr);

查找功能

 一般查找方式 

这里的-1:如果数组里没有一个数和查找的数相匹配,就返回个-1,

而下脚标没-1,所以结果是-1,意为着没有数组里没有这个数

 折半查找 可以提高效率,但是数组必须有序  

代码语言:javascript
复制
    private static int halfSearch(int[] arr, int key) {          int min, max, mid;          min = 0;          max = arr.length - 1;          mid = (min + max) / 2;            while (arr[mid] != key) {              if (key > arr[mid]) {                  min = mid + 1;              } else if (key < arr[mid]) {                  max = mid - 1;              }              if (min > max) {                  return -1;              }              mid = (min + max) / 2;          }          return mid;      }  

折半查找的第二种方式 可以提高效率,但是数组必须有序  

代码语言:javascript
复制
    private static int halfSearch_2(int[] arr, int key) {          int min, max, mid;          min = 0;          max = arr.length - 1;          // mid = (min + max)/2;            while (min <= max) {              mid = (min + max) / 2;                if (key > arr[mid]) {                  min = mid + 1;              } else if (key < arr[mid]) {                  max = mid - 1;              } else                  return mid;          }          return -1;      }  

总结:

代码语言:javascript
复制
/**建立一个用于操作数组的工具类,其中包含着常见的对数组操作的函数如:最值,排序等 。@author 张三 ()@version V1.0 (版本)*/public class ArrayTool{
 private ArrayTool(){}//该类中的方法都是静态的,所以该类是不需要的创建对象的。为了保证不让其他成创建该类对象 ,可以将构造函数私有化。
 /** 获取整型数组的最大值。 @param arr 接收一个元素为int类型的数组。 (参数) @return 该数组的最大的元素值 */ public static int getMax(int[] arr) {  int maxIndex = 0;  for(int x=1; x<arr.length; x++)  {   if(arr[x]>arr[maxIndex])     maxIndex = x;  }  return arr[maxIndex]; } /** 对数组进行选择排序。 @param arr 接收一个元素为int类型的数组。
 */ public static void selectSort(int[] arr) {  for(int x=0; x<arr.length-1; x++)  {   for(int y=x+1; y<arr.length; y++)   {    if(arr[x]>arr[y])     swap(arr,x,y);   }  } }
 /* 用于给数组进行元素的位置置换。 @param arr 接收一个元素为int类型的数组。 @param a @param b */ private static void swap(int[] arr,int a,int b) {  int temp = arr[a];  arr[a] = arr[b];  arr[b] = temp; } /** 获取指定的元素在指定数组中的索引. @param arr 接收一个元素为int类型的数组。 @param key 要找的元素。 @return 返回该元素第一次出现的位置,如果不存在返回-1. */ public static int getIndex(int[] arr,int key) {  for(int x=0; x<arr.length; x++)  {   if(arr[x]==key)    return x;  }  return -1; } /** 将int数组转换成字符串。格式是:[e1,e2,...] @param arr 接收一个元素为int类型的数组。 @return 返回该数组的字符串表现形式。 */ public static String arrayToString(int[] arr) {  String str = "[";  for(int x=0; x<arr.length; x++)  {   if(x!=arr.length-1)    str = str + arr[x]+", ";   else    str = str + arr[x]+"]";  }  return str; }}class ArrayToolDemo{ /* 保证程序的独立运行。 */ public static void main(String[] args) {  int[] arr = {4,8,2,9,72,6};
//	ArrayTool tool = new ArrayTool();//	int max= ArrayTool.getMax(arr);//System.out.println("max="+max); int index = ArrayTool.getIndex(arr,8);   System.out.println("index="+index); }} 

二维数组

int[][] arr = new int[3][2];//创建一个二维数组,该数组中有3个一维数组,每一个一维数组中有2个元素。

  • System.out.println(arr);//直接打印二维数组。   [[I@c17164 @左边是实体的类型。 @右边是实体的哈希值。
  • System.out.println(arr[0]);//直接打印二维数组中的角标0的一维数组。 [I@1fb8ee3
  • System.out.println(arr[0][0]);//直接打印二维数组中的角标0的一维数组中角标为0的元素。 0

求数组的和

代码语言:javascript
复制
int sum = 0;  int[][] arr = {{3,1,7},{5,8,2,9},{4,1}};for(int x=0; x<arr.length; x++) {    for(int y=0; y<arr[x].length; y++)  {     sum += arr[x][y];       }  }   System.out.println("sum="+sum);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-10-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档