java个人学习笔记04(function、overload、array、栈、堆)
2014-02-28 21:34
786 查看
1.函数:函数即一功能,明确该功能的结果和该功能所需的参数。return :结束函数的执行,只对于void类型函数可省略或return;
(主函数是程序运行的入口,用来调用函数,功能应细分,分别用函数实现)
2.函数重载(overload):一个类中出现同名的函数,只要他们的参数个数或者参数类型或参数顺序不同。和返回值的类型无关
3.数组的定义:
元素类型[ ] 数组名 = new 元素类型[元素个数或数组长度]
int[ ] arr = new int[5];通过new关键字创建了一个元素类型为int、数组名为arr、长度为5的数组实体
元素类型[ ] 数组名 = new 元素类型[ ] {1,2,3,...}
int [ ] arr = new int[ ] {1,2,3};OR: int [ ] arr = {1,2,3};
arr.length:通过数组的lenght属性表示数组的长度
数组在内存中存储:数组的首地址值arr存在于栈中,数组元素存储于堆中,按索引(数组下标)于堆中访问数组元素。因此数组是引用型变量
arr=null;数组arr为空,未指向堆中任何数组元素
4.内存空间的划分:栈、堆、方法区、本地方法取区、寄存器
栈内存:存储局部变量。只要是在方法中定义的变量都是局部变量。一旦变量的生命周期结束该变量就会被释放,即出栈。
堆内存:存储都是实体(对象,由关键字new创建的)。每一个实体都有一个首地址值。
堆内存变量都有默认的初始化值,不同的类型不一样:int(0),double(0.0),boolean(false),char(‘\u0000’)
当实体不再使用时,就会被垃圾回收机制自动处理(优于C++)
(另三种以后补充)
5.函数和数组的应用:
(主函数是程序运行的入口,用来调用函数,功能应细分,分别用函数实现)
2.函数重载(overload):一个类中出现同名的函数,只要他们的参数个数或者参数类型或参数顺序不同。和返回值的类型无关
/* 需求:打印可变的九九乘法表 思路:利用函数重载 */ class Cfb{ public static void main(String[] args){ print_table(); System.out.println("-----------------------------------------------------------------------"); print_table(5); } public static void print_table(){ print_table(9);//打印九九乘法表 } public static void print_table(int x){ for(int i=1;i<=x;i++){ for(int j=1;j<=i;j++){ System.out.print(j+"*"+i+"="+i*j+"\t"); } System.out.println();//换行 } } }
3.数组的定义:
元素类型[ ] 数组名 = new 元素类型[元素个数或数组长度]
int[ ] arr = new int[5];通过new关键字创建了一个元素类型为int、数组名为arr、长度为5的数组实体
元素类型[ ] 数组名 = new 元素类型[ ] {1,2,3,...}
int [ ] arr = new int[ ] {1,2,3};OR: int [ ] arr = {1,2,3};
arr.length:通过数组的lenght属性表示数组的长度
数组在内存中存储:数组的首地址值arr存在于栈中,数组元素存储于堆中,按索引(数组下标)于堆中访问数组元素。因此数组是引用型变量
arr=null;数组arr为空,未指向堆中任何数组元素
4.内存空间的划分:栈、堆、方法区、本地方法取区、寄存器
栈内存:存储局部变量。只要是在方法中定义的变量都是局部变量。一旦变量的生命周期结束该变量就会被释放,即出栈。
堆内存:存储都是实体(对象,由关键字new创建的)。每一个实体都有一个首地址值。
堆内存变量都有默认的初始化值,不同的类型不一样:int(0),double(0.0),boolean(false),char(‘\u0000’)
当实体不再使用时,就会被垃圾回收机制自动处理(优于C++)
(另三种以后补充)
5.函数和数组的应用:
/* 需求:获取数组元素的最大值 思路1:记录最大的数组元素 思路2:记录最大的数组元素下标 */ class Get_Max { public static void main(String[] args) { int[] arr={1,23,56,8,9,34,57,100}; int max1=get_max_1(arr); System.out.println("Max of arr ="+max1); int max2=get_max_2(arr); System.out.println("Max of arr ="+max2); } public static int get_max_1(int[] arr){ int max=arr[0];//记录最大元素 for(int i=0;i<arr.length;i++){ if(arr[i]>max){ max=arr[i]; } } return max; } public static int get_max_2(int[] arr){ int max=0;//记录最大元素的下标 for(int i=0;i<arr.length;i++){ if(arr[i]>arr[max]){ max=i; } } return arr[max]; } }
/* 需求:将数组元素{1,2,3,4,5,6}转化为字符串[1,2,3,4,5,6] 思路:利用字符串与任何数据相加都是相连接 */ class To_String { public static void main(String[] args) { int[] arr={1,2,3,4,5,6}; String s = toString(arr); System.out.println(s); } public static String toString(int[] arr){ String s ="["; for(int i=0;i<arr.length;i++){ if(i != arr.length-1){ s = s + arr[i] + ","; } else { s = s + arr[i] + "]"; } } return s; } }
/* 需求:输入数字,输出对应的星期 思路:查表法(数组实现):数据之间存在对应关系,通过关系中一方查询另一方。但没有一方是有序编号时,使用map容器 */ import java.util.*; class Week { public static void main(String[] args) { System.out.println("请输入一个整数:"); Scanner input = new Scanner(System.in);//Scanner类 int num = input.nextInt();//键盘输入一个整数 String re = toWeek(num); System.out.println(re); } public static String toWeek(int num){ if(num>7 | num<1){ return num+"没有对应的星期"; } else{ String[] week={"","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};//table return week[num]; } } }
/* 需求:十进制转化为十六进制(去0版),改进上一版本的各种缺点 思路:用按位与&和无符号右移>>>依次获取十进制对应二进制的末四位, 转化为十六进制逆序存储在字符数组中,当该十进制对应的二进制位 全为0时,停止转化。顺序从非0处开始输出十六进制。 */ import java.util.*; class To_Hex { public static void main(String[] args) { System.out.println("请输入一个整数:"); Scanner input = new Scanner(System.in);//Scanner类 int num=input.nextInt();//从键盘输入一个整数 String s = toHex(num); System.out.println(s); } public static String toHex(int num){ char[] arr = new char[8];//int型十进制对应8位十六进制,默认初始化为空格 int index = arr.length;//逆序存储,顺序输出 while(num !=0){//num为0时停止转换,记录index的值,作为输出的开始下标,达到去0的效果 int tmp = num&15; num = num>>>4; if(tmp > 9){ arr[--index]=(char)(tmp-10+'A'); } else{ arr[--index]=(char)(tmp+'0'); } } return "0x"+toString(arr,index); } public static String toString(char[] arr,int index){//将字符数组转化为字符串,从index处开始 String s = ""; for(int i=index;i<arr.length;i++){ s = s + arr[i]; } return s; } }
/* 需求:将十进制转化为十六进制(去0版),简化上一版 思路:查表法:先建立一张十六进制的字符表,通过按位与&和无符号右移>>>依次获取十进制对应二进制 末四位,将其转化为该表的索引,依据索引查表,获取对应十六进制字符 */ import java.util.*; class To_Hex$ { public static void main(String[] args) { System.out.println("请输入一个整数:"); Scanner input = new Scanner(System.in); int num = input.nextInt(); String s = toHex(num); System.out.println(s); } public static String toHex(int num){ char[] arr = new char[8]; char[] hex = {'0','1','2','3','4','5','6','7', '8','9','A','B','C','D','E','F'}; int index = arr.length; while(num !=0){ arr[--index] = hex[num & 15]; num = num >>>4; } return "0x"+toString(arr,index); } public static String toString(char[] arr,int index){ String s = ""; for(int i=index;i<arr.length;i++){ s = s + arr[i]; } return s; } }
相关文章推荐
- Win7下JDK环境变量的设置
- IPTOP GP的JavaMail设定与说明
- java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)
- 关于JAVA那点事---i++和++i
- JAVA JDK安装
- JDK动态代理学习笔记
- 在命令提示符窗口下(cmd)使用指令操作并编译java代码,运行java编译代码
- Java Web Service eclipse安装 环境 使用命令
- struts2随笔(一)Action、struts.xml、Interceptor细节
- SOLID rule in JAVA design.
- 原来还有这样的记词方法_Java版记不规则动词_博主推荐
- Java学习笔记之JAAS-Part2
- spring +struts2 + ibatis + mysql 案例配置
- eclipse中项目改名
- 在Eclipse中使用SVN
- java 中的常用排序算法
- java格式化输出
- Spring【IOC】【AOP】
- 欧拉计划 Java实现
- struts2-校验框架