ch02 java基础.doc_第1页
ch02 java基础.doc_第2页
ch02 java基础.doc_第3页
ch02 java基础.doc_第4页
ch02 java基础.doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章 java基础 天下本无难事,心以为难,斯乃真难。 苟不存一难之见于心,则运用之术自出第二节 方法 方法(method),在面向过程的语言中称作函数(function),实现某个特定的功能。在实际的程序开发中,方法是一种基础的组织代码的方式。1、方法概述 方法的概念来源于数学上的函数,在数学中,当数据具有一定的规律时,就是用一个函数来代码该数字的规律,例如f(n)=n则代表1、2、3、这样的一个数列。在数学上n是参数,对于确定的n值只有一个f(n)的值和它对应。 方法是一组为了实现特定功能的代码块的集合。方法在语法上的功能主要有以下两个:l 结构化代码l 减少代码重复2、方法(声明)定义 在Java语言中,方法声明之间没有顺序。方法声明,就是声明一种新的功能。例如以下是一个求int数据绝对值的方法声明代码: public int abs(int n) if(n 0) return n; else return n; 这里就实现了求int值绝对值的功能,使用一个参数n代表需要求绝对值的数值,在方法内部使用求绝对值的逻辑:正数的绝对值是自身,负数的绝对值是相反数,使用return语句将方法运算的结果返回。 具体方法声明的语法格式如下: 访问控制符 返回值类型 方法名称(参数列表) 方法体 Return 值 3、返回值类型返回值类型是指方法功能实现以后需要得到的结果类型,该类型可以是Java语言中的任意数据类型,包括基本数据类型和复合数据类型。如果方法功能实现以后不需要反馈结果,则返回值类型书写为void。在实际书写方法时,需要首先考虑一下方法是否需要反馈结果,如果反馈结果,则结果的类型是什么?这个根据方法的需要进行确定,例如上面求绝对值的方法,int类型的绝对值还是int类型,所以把返回值类型做成int型。判断某个整数是否是偶数 功能要求:判断一个整数是否是偶数 简单分析:为了实现判断任意的整数,需要在判断时从外部传入一个整数,在方法声明时,需要将该整数声明为参数。判断的结果是偶数或不是偶数,只有2个状态,可以使用能够代表2个状态的数据类型进行代表,最直观的就是boolean类型了。 该方法实现的代码如下: public boolean isEven(int n) return n % 2 = 0; 根据逻辑的需要,访问控制符选择public,返回值类型做成boolean,参数列表部分传入一个整型的参数, 这样方法声明的结构就做好了。 偶数的判断,只需要判断一下余数是否为零即可,如果余数为零则成立,否则不成立,直接把比较表达式的值作为方法的返回值返回。求两个数的最大值public class CallMethod2 public static void main(String args) CallMethod2 cm = new CallMethod2(); int n = cm.max(1,2); public int max(int a,int b) if(a b) return a; else return b; /6、 打印1-100之间所有的偶数,每行显示10个数字public class PrintNumber public static void main(String args)int a=100;/println输出后换行 System.out.println(打印1-100之间所有的偶数,每行显示10个数字); allEvenNumberPrint(a);static void allEvenNumberPrint(int a) int k=0;/输出后换行 for(int i=1;i=a;i+) if(i%2=0) if(i= 90) System.out.println(A); else if (score = 80) System.out.println(B); else if (score = 70) System.out.println(C); else if (score = 60) System.out.println(D); else System.out.println(E); 求素数程序public class TestBreakpublic static void main(String args)TestBreak tb = new TestBreak();boolean result = tb.isPrimeNumber(35); System.out.println(result);public boolean isPrimeNumber(int n)boolean flag = true;for(int i=2; i b) return a; else return b; public static void printTest() System.out.println(进入printTest方法内部!); int a = 10; System.out.println(printTest方法执行完毕!); 则该代码执行时的输出如下: 1进入printTest方法内部!printTest方法执行完毕!2进入max方法内部!3 从程序执行的输出就可以清晰的看出方法调用时代码的执行顺序。5、方法重载 方法重载(overload)是一种语法现象,指在一个类内部出现了多个方法名相同,但是参数列表不同的方法。 以下是方法重载的示例: public int add(int a,int b) public float add(float a,float b) public double add(double a,double b) 在以上示例方法中,方法的名称都是a,而参数列表却各不相同,这些方法实现了重载的概念。但是仔细观察可以发现,这些重载的方法的返回值不尽相同,因为返回值类型和方法的重载无关。 通常情况下,重载的方法在访问控制符、返回值类型上都保持相同,这个不是语法的要求,只是将这些制作成一致以后,便于实际使用。请实现三个同名方法(calArea),分别计算给出的矩形、三角形和圆形的面积。 public class Sum public int sum1(int i) int i1; int sum=0; for(i1=1;i1=i;i1+) sum+=i1; return sum; public class Test public static void main(String args) Sum sum=new Sum(); System.out.println(sum.sum1(100); Test的另一种写法:import java.util.InputMismatchException;import java.util.Scanner;public class Test2 public static void main(String args) Scanner scanner=new Scanner(System.in); int i; try i =scanner.nextInt(); Sum sum=new Sum(); System.out.println(1+2+3+.+i+=+sum.sum1(i); catch(InputMismatchException e) System.out.println(程序运行失败,请输入整数); 或:public class Sum public int sum1(int i) int i1; int sum=0; for(i1=1;i1=i;i1+) sum+=i1; return sum; public static void main(String args) Sum sum=new Sum(); System.out.println(sum.sum1(100); 第二章 基本数据类型和数组第一节 基本数据类型与表达式一、基本数据类型 二、常用的转义字符public class CharacterDemo public static void main(String args) char c1=a;char c2=u0061;char c3=0x0061;char c4=97;System.out.println(c1+ +c2+ +c3+ +c4);ascII A 65 a 97 0-9 48-57 01000001 00110000public class PrintAsciiChar public static void main(String args) int n=0; for(int i=32;i127;i+) System.out.print( +(char)i); n+; if(n%10=0) System.out.println(); 三、unicode编码1、GB2312GB2312编码,高位从0xa1到0xfe,低位也是从0xa1到0xfe,其中,汉字的编码范围为0xb0a1到0xf7fe。65536 你 c4e3 11000100 111000112、GBKGBK提供了20902个汉字,它兼容GB2312,编码范围为0x8140到0xfefe。GBK中的所有字符都可以一一映射到Unicode 2.0。Gb180303、汉字的unicode编码字符型占2个字节,使用unicode编码Unicode的功能可以混合输入和显示世界各国语言. 4f60 public class UnicodeDemo public static void main(String args) char c1=你;char c2=u4f60;char c3=0x4f60;char c4=20320;System.out.println(c1+ +c2+ +c3+ +c4);实例:public class UnicodeDemo2 public static void main (String args ) char chinaWord=你,japanWord=; 四、UTF编码1、什么是utf-8编码UTF,是Unicode Translation Format的缩写,意为Unicode转换格式。2、具体转换规则unicodeUTF-8 字节流(二进制)0000 - 007F0xxxxxxx00-7F0080 - 07FF110xxxxx 10xxxxxx(c0-df)(80-bf)0800 - FFFF1110xxxx 10xxxxxx 10xxxxxx(e0-ef)(80-bf)(80-bf)GB2312(GBK)UnicodeUTF-8汉BABA6C49E6B189字D7D65B57E5AD97你C4E34F60E4BDA0好BAC3597DE5A5BD3、UTF-8的文件用记事本来把文本文件存成utf-8和unicode、ANSI进行比较大小。存成ANSI为4字节,存成Unicode为6字节,存成UTF-8为9字节Unicode、Unicode big endian和UTF-8编码的txt文件的开头会多出几个字节,分别是FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)。big endian和little endian是处理多字节数的不同方式。例如“汉”字的Unicode编码是6C49。那么写到文件里时,究竟是将6C写在前面,还是将49写在前面?如果将6C写在前面,就是big endian。还是将49写在前面,就是little endian。4、将jsp页面字符集变为UTF-8% page language=java contentType=text/html; charset=UTF-8五、运算符在java中,假如+号在string之前出现,执行的是运算,而要是在string 后出现,则执行的是字符连接,例如public class twopublic static void main(String args)int x=1,y=2,z=3;String s=string;System.out.println(x+y+z+s);System.out.println(s+x+y+z);答案:6string string123第二节 标准输入输出import java.util.Scanner;public class TestInputpublic static void main(String args)Scanner s = new Scanner(System.in);System.out.println(请输入你的姓名:);String name = s.nextLine();System.out.println(请输入年龄:);int age = s.nextInt();System.out.println(请输入你的工资数额:);double salary = s.nextDouble();System.out.println(您的个人信息:n姓名 + name + t年龄 + age + 岁t工资 + salary + 元);第三节 编码惯例 1.类、首字母大写,第二个单词开始首字母大写。 2.变量,首字小写,第二个单词开始首字母大写。 3.方法,首字母小写,第二个单词开始首字母大写。方法有无参数都有括号。构造方法除外。 4.常量 所有的字母都大写,每各个单词用下划线隔开。 5 关键词,所有字母都小写。 第四节 循环结构从键盘读入一个数字,判断该数是否为素数import java.util.*;public class prime /* * param argsa */public static void main(String args) Scanner cin=new Scanner(System.in); int n=cin.nextInt(); boolean flag=false; for(int i=2;i=(int)Math.sqrt(n);i+) if(n%i=0) flag=true; break; if(flag=true)System.out.println(not is a prime); else System.out.println(is a prime); public class TestBreakpublic static void main(String args)TestBreak tb = new TestBreak();boolean result = tb.isPrimeNumber(35); System.out.println(result);public boolean isPrimeNumber(int n)boolean flag = true;for(int i=2; in; i+)if(n % i = 0)flag = false;break;return flag;class ZhiShu private static boolean isZhiShu(int num) int j; for (j=2;jnum ;j+ ) if(num%j)=0) return false; return true; public static void main(String args) for (int i=1;i101 ;i+ ) if(isZhiShu(i) System.out.print(i+ ); P97 例4-24import java.util.Scanner;public class TestBreakOuterpublic static void main(String args)Scanner scan = new Scanner(System.in);int i;outer:while(true)i = scan.nextInt();for(int j=2; ji; j+)if(i%j = 0)System.out.println(i + 不是素数,程序退出);break outer;System.out.println(i + 是素数,请继续!);作业:读懂p98 4-26public class TestContinueOuterpublic static void main(String args)int n = 0;outer:for(int i=101;i200;i+=2) /外层循环for(int j=2; ji;j+) /内层循环if(i%j=0)continue outer; /不能使用 break ,为什么?System.out.print(i + t);n+; if(n6 )continue;System.out.println(); /输出六个数据后换行n = 0; 第五节 递归public class Factorialpublic int f(int n)if(n = 1)return 1;elseint k = f(n-1);return n*k;public static void main(String args)Factorial fact = new Factorial();int result = fact.f(4);System.out.println(result); 第六节 数组数组是一组类型相同的数据,这些数据按顺序分配在内存中一片连续的地址内。通过数组中的下标来区分不同的元素。/为什么一、声明数组声明数组包括数据的名字、数组的元素类型。一维数组的声明:类型 数组名类型 数组名;二维数组的声明:类型 数组名;类型 数组名;String s;int temp;float h;int a;float b;二、初始化用new关键字定义数组的大小并为数组分配内存。如: temp =new int10;s=new String5; 用new为数组分配内存时,自动用缺省值初始化所有元素。缺省值与数据类型相匹配,如下所示。数值型:0布尔型:false字符型:String 为null定义、初始化可一步完成int temp=new int10;注:可用整型变量来指定数组的大小。三、赋值注:定义、初始化、赋值可一步完成int temp=1,2,3,4,5,6,7,8,9,10;四、数组的使用(1)基本用法public class ScoreArray public static void main(String args) int score = 90, 85, 55, 94, 77; for(int i = 0; i score.length; i+) System.out.print(scorei + ); System.out.println(); /ArrayAvg.javapublic class ArrayAvg public static void main(String args) final int ARRAY_SIZE=10; int a=new intARRAY_SIZE; int i=0; int sum=0; double avg=0.0; for(i=0;ia.length;i+) /使用了length属性 ai=(int)(Math.random()*10); /产生随机数 sum=sum+ai; /计算和 System.out.print( +ai); /输出 System.out.println(); avg=(double)sum/a.length; /先转换为浮点数,再计算 System.out.println(average=+avg); 五、数组的length属性 String names=Chen,Yuan,Chun,Yang;/*String names;names=new String4;names0= Chenji;names1= Yuan;names2= Chun;names3= Yang;*/for(int i=0;inames.length;i+)System.out.println(namesi); 六、二维数组 int twoDim = new int 23; twoDim00=1; twoDim01=2; twoDim02=3; twoDim10=4; twoDim11=5; twoDim12=6; 或:int twoDim=1,2,3,4,5,6; int twoDim = new int 2; twoDim0 = new int2; twoDim1 = new int3; twoDim00=1; twoDim01=2; twoDim10=4; twoDim11=5; twoDim12=6; 或:int twoDim=1,2,4,5,6; int twoDim = new int 4; 非法例:int arr = 1, 2, 3, 4, 5, 6; TwoDimarray.java public class TwoDimArray public static void main(String args) int arr = 1, 2, 3, 4, 5, 6; for(int i = 0; i arr.length; i+) for(int j = 0; j arr0.length; j+) System.out.print(arrij + ); System.out.println();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论