




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录一、进制转换31 . 二进制和十进制之间的转换32. 其他进制转换3二、 变量41.如何开辟内存空间42.什么时候定义变量53.类型转换5三、运算符51./ * 运算52. +63. 字符串连接 +64. 转义字符65.赋值运算76.逻辑运算符7四、程序流程控制91.if.else92.Switch11五、 循环111.while循环112. Do.while123.for124.While 和 for135.for循环练习13求1-10的和131-100之间7的倍数136. for循环嵌套14打印尖朝上的三角形14打印数字三角形14打印尖朝下的三角形15九九乘法表16打印居中三角形167. break和continue17定义标号退出循环17Continue例子17六、 函数181.函数的定义182.函数的特点193. 函数的引用19七、 函数的重载201.概念202.特点203.什么时候使用重载20八、数组201.数组的定义:202.数组分析213.数组在内存中存储的结构214.对内存的特性225. 数组静态初始化226.数组常见的操作22获取数组中的元素,通常会用到遍历22获取最大值 、最小值23选择排序24冒泡排序(面试)25数组中的查找26折半查找26练习(重点面试)27进制转换28一、进制转换 1 . 二进制和十进制之间的转换 十进制二进制。 6的二进制 原理:对十进制数进行除2运算。 二进制十进制。 原理:二进制乘以2的过程。 1 1 0 例: 1+1满二进一也就是10。2. 其他进制转换 转换成十六进制,先转换成二进制在进行转换。因为是个二进制位就是一个十六进制位。 例:90转换成十六进制 十六进制 转换成八进制,三个二进制位代表一位 例:90转换成八进制二进制就是132.负数的二进制表现形式6=110-6:其实就是6的二进制取反+1.取反:将二进制的1变成0,0变成1.负数的最高位都是1.2、 变量 变量就是将不确定的数据进行存储。也就是需要在内存中开辟一个空间。 1.如何开辟内存空间 就是通过明确数据类型,变量名称数据来完成。 数据类型 变量名 = 初始化值 int x = 4; 数据类型分为:基本数据类型 引用数据类型 Float和double 精度不同,在内存中占用的空间也不同。Float占了4个八位,double占了8个八位2.什么时候定义变量 当数据不确定的时候。需要对数据进行存储时。 就定义一个变量来完成存储动作。3.类型转换 byte b =3; b=b+2; 会报错数据容易损失精度 如果非要把值赋给b 就需要强制转换 b=(byte)(b+2) System.out.println(a+1);这句话会把 a 转换成数值在加1.三、运算符 1./ * 运算 int x = 4270;x = x/1000*1000;System.out.println(x); 4270除1000之后会得到double类型的数据,然后在乘以1000得到的结果 会把double 类型的结果后面的小数去掉,保留整数部分。 System.out.println(-1%5); 如果前面是负数的话结果就是负数,如果是正数的话那么结果 就是正数2. + int a =3,b; b = a+; 先将a的值赋给b然后a在+a+ a=a+1; a+ 我先出去玩,然后在回家吃饭 int a =3,b; b =+ a; a的值先自行+,然后在将a的值赋给b +a 我先在家吃饭,在出去玩3. 字符串连接 + 字符串数据和任何数据使用+都是相连接,最终结果都会变成字符串。 System.out.println(5+5+5+5); 结果是:55554. 转义字符通过 来转变后面字母或者符号的含义 n:换行 b:退格 r:按下回车键 t:制表符 相当于tab建在Linux下换行是一个字符 n在Windows系统下换行是两个字符 r n在Dos下直接是r输出一个带双引号的字符System.out.println(hello);5.赋值运算 int x = 3; 把右边的值赋给左边。 x+=4; 把左右两边的和赋给左边。 short s =4; /s=s+5;这个是两次运算,先做加法,在做赋值。 s +=5;这个是一次运算,把左右两边的和赋给左边。会做自动转换工作。 s=s+5 编译失败。因为s会被提升为int类型,运算后的结果还是int类型。无法赋值给 short类型。 s+=5 编译通过,因为+=运算符在给赋值时,自动完成了强转操作。 6.逻辑运算符逻辑运算符用于连接boolean类型的表达式 & (and) 与 true & true = true; true & false= false; false& true = false; false& false= false;&:只要两边的boolean表达式结果,有一个为false。那么结果就是false。 只有两边都为true,结果才为true。 | 或 true | true = true; true | false= true; false| true = true; false| false= true; | : 两边只要有一个味true,结果为true 只有两边都有false,结果为false。 异或 true true = false; true false= true; falsetrue = true; false false= false; : 异或;就是和 | 有点不一样。当true true = false; 两边相同结果就是false 两边不同结果是true 双与 &(面试) & :具有短路的功能 | 和 | | 的特点 | :两边都参与运算 | : 当左边为true。右边不运算。 右移 四、程序流程控制 1.if.else ifelse 与 三元运算符的区别 if else 结构 简写格式: 变量 = (条件表达式) ? 表达式1:表达式2; 三元运算符 : 好处:可以简化if else代码。 弊端:因为是一个运算符,所以运算完必须要有一个结果 If语句只要有一个满足下面的语句就不会执行。练习: class IfTest public static void main(String args) /需求1:根据用户定义的数值不同。打印对应的星期英文。int num = 2;if(num=1)System.out.println(monday);else if (num=2)System.out.println(tsd);elseSystem.out.println(nono);/需求2:根据用于指定月份,打印该月份所属的季节。/3,4,5春季 6,7,8夏季 9,10,11 秋季 12,1,2冬季int x = 4;if (x=3|x=4|x=5)System.out.println(春季);else if (x=6|x=7|x=8)System.out.println(夏季);else if (x=9|x=10|x=11)System.out.println(秋季);else if (x=12|x=1|x=2)System.out.println(冬季);elseSystem.out.println(x+月份不存在);/第二种写法if(x12 | x=3 & x=6 & x=9 & x=11)System.out.println(秋季);elseSystem.out.println(冬季); 2.Switch switch语句:允许变量与多个值进行相等性检测,每个值被一个case语句调用和检测。语法:switch(变量)case 值 :/语句break;case 值 :/语句break;default:/语句switch语句中检测的变量只能是 byte、short、int和char类型break:用break语句可以跳出switch语句体,程序继续执行switch语句体下面的程序3.if else 和 Switch if else 和switch 语句很像。 具体什么场景下,应用那个语句? 如果判断的具体数值不多,而是符合 byte、short、int和char类型 这四种类型 虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。 其他情况:对区间判断,对结果为Boolean类型判断。使用if else 因为使用的范围要广。5、 循环1.while循环定义初始化表达式while(条件表达式)循环体(执行语句)程序流程先进行while循环,首先检测到布尔表达式。如果是true就执行循环,知道布尔表达式为false为止例子: class WhileDemo public static void main(String args) /*定义初始化表达式*/int x = 3;while(x1)System.out.println(Hello World!);x+;2. Do.while do/while循环与while类似,不同的是do/while循环至少要执行一次,语法为:do /语句while(布尔表达式);While : 先判断条件,只用条件满足才执行循环体。Do while : 先执行循环体,在判断条件,条件满足,在继续执行循环体。简单一句话:do while : 无论条件是否满足,循环体至少执行一次。例子: int x = 1;do System.out.println(do : x=+x); x+; while(x0); 3.forfor循环是一种允许我们编写一个执行指定次数循环的控制结构,其语法形式如下:for(初始化表达式;循环表达式;循环后的操作表达式)执行语句无限循环的最简单的表现形式。for ( ; ; )4.While 和 for (1) 变量有自己的作用域。对于for来讲;如果将用于控制循环的增量定义在for语句中, 那么该变量只在for语句内有效。for语句执行完毕。该变量中内存中就会消失。 (2) for和while可以进行互换。如果需要定义循环增量。用for更为合适。5.for循环练习 求1-10的和class ForTest2 public static void main(String args) getNum();public static void getNum()int sum = 0;for (int x=1;x=10;x+)sum=sum+x;System.out.println(sum=+sum); 1-100之间7的倍数 public static void getTest3()int count = 0;for (int x=1;x100;x+ )if(x%7=0)/System.out.println(x=+x);count+;System.out.println(7的倍数的个数是:+count); 6. for循环嵌套 打印尖朝上的三角形 * * * *for (int x=0;x5;x+)for (int y=0;y=x;y+ )System.out.print(*);System.out.println();注:尖朝上,可以改变条件。让条件随着外循环变化。 尖朝下,可以初始化值,让初始化随着外循环变化。打印数字三角形 11 21 2 31 2 3 4 1 2 3 4 5for (int x=1;x=5;x+)for (int y=1;y=x;y+)System.out.print(y);System.out.print();打印尖朝下的三角形*第一种方式: for (int x=0;x6;x+)for (int y=x;y0;x+)for (int y=0;yx;y+)System.out.print(*);System.out.println();/只用一个功能是换行 九九乘法表 for (int x=1;x=9;x+)for (int y=1;y=x;y+)System.out.print(x+*+y+=+x*y);System.out.println();打印居中三角形-*-* *-* * *-* * * * * * * *for (int x=0;x5;x+)for (int y=x+1;y5;y+ )System.out.print( );for (int z=0;z=x;z+)System.out.print(* );System.out.println();7. break和continuebreak:用break语句可以跳出switch语句体,程序继续执行switch语句体下面的程序。在循环结构中,也可以用break语句跳出本层循环体,从而提前结束层循环。continue:作用是结束本次循环(即跳过本次循环中余下尚未执行的语句),继续下一次循环。定义标号退出循环 w:for (int x=0;x3;x+)q:for (int y=0;y4;y+)System.out.println(x=+x);Break w;/*标号只能定义在break循环上*/Continue例子 例子一: for (int x=0;x10;x+ )if(x%2=1)continue;System.out.println(x=+x); 例子二: w:for (int x=0;x3;x+)q:for (int y=0;yb)?a:b; 7、 函数的重载 1.概念在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可 2.特点 与返回值类型无关,只看参数类表。 3.什么时候使用重载 当定义的功能相同,当参与运算的未知内容不同。那么,这时就定义一个函数名称才表示该功能,方便阅读,而通过参数类表的不同来区分多个不同名的函数。 例子: int add(int x ,int y)return x+y; int add(int x,int y , int z)return x+y+z; 八、数组 1.数组的定义:概念:同一种数据类型的集合。其实数组就是一个容器。好处:可以自动个数组中的元素从0开始编号,方便操作这些元素 格式:1.元素类型 数组名 = new 元素类型元素个数或长度例子:int arr = new int2;2.元素类型 数组名 = new 元素类型元素1,元素2,.例子:int arr = new int1,2,4,5;int arr = 2,4,5;2.数组分析 数据类型有两种:基本数据类型,引用数据类型 int arr = new int2; arr它不是int类型,是数组类型,int 表示 是数组里面的数据类 数组类型就是引用数据类型。只有引用类型的数据才有null值。3.数组在内存中存储的结构Java程序中运行时,需要在内存中分配空间。为了提高运算效率 ,有对空间进行了不同区域的划分, 因为没一片区域都有特定的处理数据方式和内存管理方式。 栈内存: 用于 存储局部变量。当数据使用完,所占空间会自动释放。 堆内存: 数组和对象,通过new关键字建立的实例都存放在堆内存中。 每一个实体都有内存地址值 实体中的变量都有默认初始化值 实体不在被使用,会长不确定的时间内被垃圾回收器回收。 实例:int x= new int2int x 是在栈内存存储的,一旦new出来的都是存在堆内存存储的。new int2 就会在堆内存中分配两个内存地址值,每个内存地址块都会有一个唯一的内存首地址值。那么堆内存中的地址怎么样跟数组变量 x 联系起来呢?堆内存中的每一个实体都有一个存放位置或内存地址值。用内存地址来表示数据存储的位置。这个内存地址用16进制来表示内存的首地址把堆内存的首地址赋值给 x 这样x都有值了。这样x就指向了这个数组intx = new int2了。或者说x引用了这个数组。4.对内存的特性 每个实体的堆内存都有初始化默认值,每个数据类型不一样默认值也不一样。如果是 Boolean类型的默认值是false。int x = new int2int y = xx=null; 如果x=null那么就跟堆内存中的数据没有联系了。那么堆内存的数据就会变成垃圾。 这样就会存在垃圾x就不会指向堆内存中的实体的地址。 Java jvm中的 垃圾收集机制就会把堆内存中的数据清理掉。5. 数组静态初始化int arr = new int1,2,4,5这种方式就是静态初始化方式。 int arr = new int1,2,4,5; System.out.println(arr4); 编译的时候不会出错,但运行的时候会出现ArrayIndexOutBoundsException异常。 因为数组中这个角标。数组下标越界。int arr = new int1,2,4,5;arr=null;System.out.println(arr4); 运行的时候会出现NullPointerException异常。因为arr这个数组为null就不会指向任何数组的实体。 当引用没有任何指向值为null的情况,该引用还在用于操作实体6.数组常见的操作 获取数组中的元素,通常会用到遍历 public class ArrayDemo public static void main(String args) int arr = new int2,4,5,7; 打印数组中的元素,元素之间用逗号隔开。public static void printArray(int arr) for(int x=0;xarr.length;x+) if(x!=arr.length-1) System.out.println(arrx+,); else System.out.println(arrx); 数组中有一个length属性。获取最大值 、最小值给定一个数组3,5,1,6,9求最大值 、最小值 。 题目分析: 获取最大值 思路:获取最值需要进行比较。每一比较都会有一个较大的值。 让数组中的每一个元素都和这个变量中的值进行比较。 当所有的元素都比较完之后,那么该变量中存储的就是数组中的最大值了。 步骤:定义变量,初始化为数组中任意一个元素即可。 通过循环变量语句对数组进行遍历。 在变量过程中定义判断条件,如果变量到的元素比较比元素大,就赋值个该变量。 需要定义一个功能来完成。以便提高复用性。 1.明确结果,数组中的最大元素 int。 2.未知内容:一个数组。int; /获取最大值 public class ArrayTest public static int getMax(int arr) int max = arr0; for(int x=1;xarr.length;x+) if(maxarrx) max=arrx; return max; 获取最大值第二种方式 可不可以临时变量初始化为0呢?可以,这种方式,其实是在初始化为数组中任意一个角标 public static int getMax(int arr) int max = 0; 0作为角标值 for(int x=1;xarr.length;x+) if(arrmaxarrx) max=x; return arrmax; 获取最小值 public static int getMin(int arr)int min = arr0;for(int x=0;xarr.length;x+)if(min arrx)min =arrx;return min ; public static void main(String args) int arr=3,5,1,6,9 ;int max = getMax(arr);int min = getMin(arr); System.out.println(max=+max); System.out.println(min =+min); 选择排序选择排序,内循环结束一次,最值出现头角标位置上。public static void selectSort(int arr)for(int x=0;xarr.length-1;x+) 最后一个整数不用参与比较,因为他是最后一个。所以arr.length-1for(int y=x+1;yarry)int temp = arrx;arrx=arry;arry=temp; 冒泡排序(面试) 相邻的两个元素进行比较,如果符合条件就换位 public static void bubbleSort(int arr) for(int x=0;xarr.length;x+) for(int y =0;yarry+1) int temp = arry; arry = arry+1; arry+1 =temp; 数组中的查找定义功能,获取key第一次出现在数组中的位置。如果返回是-1,那么代表该key在数组中不存在 public static int getIndex(int arr , int key) for(int x=0;xarrmid)min=mid+1;else if(arrmidmax)return -1;mid=(min+max)/2;return mid;拆半的第二种方式public static int halfSeach_2(int arr,int key)int min,max,mid;min=0;max=arr.length-1;while(min1;/右移一位,相当于(min+mid)/2if(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 租赁合同范本怎么签约
- 学生书本租售合同范本
- 教培工资合同范本
- 假山工程担保合同范本
- 个人电子借款合同范本
- 低层公寓出租合同范本
- 文员制定合同范本模板
- 过敏性紫癜关节型护理查房
- 回收桌椅合同范本
- 简易扇灰合同范本
- 巷道围岩注浆加固施工安全技术措施
- 实验中学初一新生分班考试数学试卷附答案
- 区治安巡防队员面试题
- 施工组织设计施工总体部署完整版
- TUPSW微机控制电力专用不间断电源(UPS)系统使用说明书
- 骨质疏松诊治与中医药
- LY/T 2383-2014结构用木材强度等级
- GB/T 528-2009硫化橡胶或热塑性橡胶拉伸应力应变性能的测定
- 中日关系历史
- GB/T 15171-1994软包装件密封性能试验方法
- 2023年江苏省中学生生物学竞赛(奥赛)初赛试题和答案
评论
0/150
提交评论