Java基础学习笔记(第一部分).doc_第1页
Java基础学习笔记(第一部分).doc_第2页
Java基础学习笔记(第一部分).doc_第3页
Java基础学习笔记(第一部分).doc_第4页
Java基础学习笔记(第一部分).doc_第5页
免费预览已结束,剩余117页可下载查看

下载本文档

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

文档简介

-传智java基础之毕向东老师-曹魁 Java基础知识总结第一天:java基础概述- 5 -1.1基础常识- 5 -1.2 java语言的三种技术架构- 6 -1.3 Java语言的特点- 6 -1.4 JRE,JDK- 7 -1.5 java环境的搭建- 7 -1.6 classpath环境变量的概述- 8 -1.7 java语言初体验:HelloWorld- 8 -1.8 问题和总结:- 8 -第二天:Java语言基础- 9 -2.1 java语言基础组成- 9 -2.1.1关键字- 9 -2.1.2标识符- 9 -2.1.3注释- 10 -2.1常量- 10 -2.2变量- 11 -2.3类型转换- 11 -2.4 运算符- 12 -2.4.1 算术运算符- 12 -2.4.2 赋值运算符- 13 -2.4.3比较运算符- 13 -2.4.4 逻辑运算符- 14 -2.4.5 位运算符- 15 -2.4.6 三元运算符- 15 -程序练习:- 15 -第三天:流程控制语句- 16 -3.1 判断结构-if语句- 16 -3.2 选择结构-switch语句- 16 -3.3 循环结构-while,do while,for,for嵌套- 17 -3.4 其他流程控制语句-break(跳出),continue(继续)- 18 -第四天:函数- 18 -4.1 函数的定义- 18 -4.2 函数的特点- 19 -4.3 函数的应用- 19 -4.4 函数的重载(overload)- 20 -4.5 主函数(main)剖析- 20 -第五天:数组- 21 -5.1数组的定义- 21 -5.2 数组的内存分配及特点(栈,堆,方法区)- 21 -5.3 数组常见操作- 22 -5.3.1获取最值(最大值,最小值)- 22 -5.3.2 排序(选择排序,冒泡排序)- 23 -5.3.3 折半查找(二分查找)- 24 -5.3.4 查表法- 25 -5.4 数组操作常见问题- 27 -程序练习:- 28 -6. 二维数组(第六天)- 31 -第三个一维数组的长度表示方式:arr2.length;- 31 -第六天:面向对象(1)- 32 -6.1 面向对象- 32 -6.2 类和对象的关系- 32 -6.3 成员变量和局部变量- 33 -6.4 创建对象和使用对象- 33 -6.5匿名对象- 34 -第七天:面向对象(2)- 34 -7.1 封装(Encapsulation)- 34 -7.2 private(私有)关键字- 34 -7.3 构造函数- 36 -7.3.1 构造函数和一般函数的区别:- 37 -7.3.2 小细节- 37 -7.3.3 什么时候定义构造函数- 37 -7.3.4 构造代码块- 38 -7.4 this关键字- 39 -7.5 static(静态)关键字- 40 -7.5.1静态的特点- 40 -7.5.2静态的使用注意事项- 41 -7.5.3 非静态成员变量和静态成员变量的区别- 41 -小疑问:- 41 -7.5.4 什么时候使用静态*- 41 -7.5.5 静态代码块- 42 -第八天 单例设计模式(面试)*- 43 -第九天 面向对象(3)- 45 -9.1 继承的概述- 45 -9.2 特点- 45 -9.3 继承子父类中的成员变化- 46 -9.3.1成员变量:- 46 -9.3.2 成员函数- 46 -9.3.3构造函数- 47 -9.4 final关键字- 49 -9.5 抽象类(abstract)- 49 -9.5.1 抽象类的特点- 49 -9.5.2 细节问题- 50 -9.5.3 抽象类和一般类异同点- 50 -第十天 面向对象(4)- 51 -10.1 接口(interface)- 51 -10.1.1 接口表现特点- 51 -10.1.2 接口的思想特点- 51 -10.1.3抽象类和接口之间的区别- 52 -10.1.4 没有抽象方法的抽象类- 53 -10.2 多态(polymorphism)- 54 -10.2.1定义- 54 -10.2.2多态在代码中的体现- 54 -10.2.3重点理解- 55 -10.2.4 多态在成员上的变化特点- 55 -10.2.5 多态的转型- 56 -10.2.6 关键字:instanceof- 56 -10.3 Object及其常用方法equals、toString、getClass、hashCode- 57 -章节练习- 58 -第十一天 面向对象(5)- 58 -11.1内部类- 58 -11.1.1定义- 58 -11.1.2内部类访问的规则- 59 -11.1.3内部类的修饰符- 59 -11.2匿名内部类- 61 -11.3 异常- 62 -11.3.1 异常定义- 62 -11.3.2 异常处理方式- 63 -11.3.3 自定义异常- 63 -基础练习:- 65 -第十二天 面向对象(6)- 65 -12.1 包(package)- 65 -12.2 常见编译错误- 66 -第十三天:多线程(1)- 68 -13.1 多线程- 68 -13.2 创建多线程的第一种方式-继承Thread类- 68 -13.3 多线程的特点- 69 -13.4 线程运行状态- 69 -13.5创建多线程的第二种方式-实现Runnable接口(重点)- 70 -13.6 多线程的安全问题:- 71 -13.7 同步的原理、好处、前提、弊端、如何寻找问题- 71 -第十四天:多线程(2)- 72 -14.1同步的表现形式- 72 -14.2 单例设计模式的安全问题分析- 73 -14.3 同步的另外一个弊端:死锁- 73 -14.4 线程间通信- 74 -14.5 等待唤醒机制*- 75 -14.6 生产者和消费者问题- 76 -课后练习:- 77 -第十五天:多线程(3)- 78 -15.1 Lock接口- 78 -15.2 停止线程- 80 -15.3 守护线程setDaemon- 80 -15.4 wait和sleep的区别:(面试题)- 81 -15.5 线程细节-join,setPriority,yield,toString- 81 -课后练习:- 82 -第十六天:API(1)- 82 -16.1 String类- 82 -阶段性练习(1)- 84 -综合性练习(2)- 85 -16.2 StringBuffer- 85 -16.3 StringBuilder- 87 -第十七天:API(2)- 87 -17.1 基本数据类型的对象:包装类- 87 -17.1.1 类型转换- 87 -17.1.2 自动装箱和拆箱- 88 -17.1.3 常见操作- 89 -17.2 集合框架(Collection)- 90 -17.2.1 Collection中的方法- 91 -17.2.2 迭代器- 92 -17.2.3 集合使用的细节- 93 -课后练习- 94 -第十八天 API(3)- 95 -18.1 集合框架的构成及分类- 95 -18.2 List接口- 96 -18.2.1 ListIterator接口- 97 -18.2.2 LinkedList接口-(演示队列和堆栈)- 97 -18.3 Set接口- 98 -18.3.1 HashSet- 98 -18.3.2 TreeSet- 101 -集合的技巧掌握- 103 -课后练习- 104 -第十九天:API(4)- 105 -19.1 泛型- 105 -19.1.1 由来和特点- 105 -19.1.2 什么时候写泛型- 106 -19.1.3 泛型的好处- 106 -19.1.4 泛型类- 106 -19.1.5 泛型方法- 106 -19.1.6 泛型接口- 107 -19.1.7 泛型通配符- 107 -19.1.8 泛型的限定- 108 -19.2 增强for循环foreach语句- 108 -课后练习:- 109 -第二十天:API(5)- 109 -20.1 Map集合- 109 -20.1.1 特点- 109 -20.1.2 Map常见方法及两种重要方法(keySet&entrySet)- 109 -20.1.3 何时使用Map- 112 -20.2 HashMap- 112 -20.3 TreeMap- 113 -20.4 集合框架的工具类-Collections,Arrays- 114 -20.5 增强特性- 115 -20.5.1 asList:能将数组变成集合- 115 -20.5.2 toArray:将集合变成数组- 116 -20.5.3 可变参数- 116 -20.5.4 静态导入- 117 -课后练习:- 117 -Java编程注意事项篇Demo:什么时候用 Test:怎么用注:写代码的时候:要在代码的前端写需求分析,思路和过程。1,需求:练习一个helloWorld程序,通过Java代码将helloWorld文字打印在控制台上。2,思路: 1,要求用java代码,java的代码首先必须有类。2,光有类还不行,还必须要让这个类能运行。3,要想有运行的结果是helloWorld,需要java语言将数据打印的代码来完成。3,步骤:1,用关键字class来定义一个类,并起一个名字。2,在该类中定义一个main方法,保证该类的独立运行。3,定义输出语句,将指定的数据进行打印。 4,用代码进行思想和步骤的体现。记住:代码仅仅是思想的一种体现形式而已。注意力都在代码上,你以后就是一个高级打字员。 注意力放在思想上,你以后可以成为一个有技术思想的程序员。注意:1,我要做什么?2,我要怎么做?3,用什么步骤来实现?4,用代码来实现。 四步格式:是什么,什么特点,怎么用,何时用?第一天:java基础概述1.1基础常识1,软件开发软件:一系列按照特定顺序组织的计算机数据和指令的集合。常见的软件:系统软件,如:DOS,windows,Linux等。 应用软件:如:扫雷,迅雷,QQ等。2,人机交互方式 (1)图形化界面(2)命令行方式3,常用的DOS命令 dir : 列出当前目录下的文件以及文件夹 md : 创建目录 rd : 删除目录 cd : 进入指定目录 cd. : 退回到上一级目录 cd: 退回到根目录 del : 删除文件 exit : 推出dos命令行1.2 java语言的三种技术架构J2EE(Java 2 Platform Enterprise Edition)企业版J2SE(Java 2 Platform Standard Edition)标准版J2ME(Java 2 Platform Micro Edition)小型版是为开发企业环境下的应用程序提供的一套解决方案。是为开发普通桌面和商务应用程序提供的解决方案。是为开发电子消费产品和嵌入式设备提供的解决方案。注:java5.0版本后,更名为:javaEE,JavaSE,JavaME1.3 Java语言的特点跨平台性:通过java语言编写的应用程序可以在不同的系统平台上都可以运行。原理:可以在不同系统上安装不同版本的Java虚拟机(Java Virtul machine JVM)来运行java程序。由JVM来负责Java程序在该系统中的运行。1.4 JRE,JDK JRE(Java Runtime Environment Java运行环境)包括:java虚拟机和Java程序所需的核心类库。JDK(Java Development Kit Java开发工具包)其中的开发工具:编译工具(javac.exe)打包工具(jar.exe)。简单而言:使用JDK开发完成的java程序,交给JRE去运行。1.5 java环境的搭建java环境变量的配置:1,一劳永逸配置2,技巧性配置:为了不因为jdk的目录或者目录名称的改变,而不断更改path的值,而导致对path变量值的误操作,可以通过以下技巧完成。新创建一个环境变量 JAVA_HOME 记录住jdk的目录。在path中通过%动态的获取JAVA_HOME的值即可。如:JAVA_HOME=F:jdk1.6.0_01 path=%JAVA_HOME%bin;%path% %path%:动态获取path环境变量的值。 %JAVA_HOME%:动态获取名称为JAVA_HOME环境变量的值。3,临时性配置set path=(path = xixixi;%path%)方式:通过dos命令中set命令完成set :用于查看本机的所有环境变量的信息。set 变量名 :查看具体一个环境变量的值。set 变量名=:清空一个环境变量的值。set 变量名=具体值 :给指定变量定义具体值。想要在原有环境变量值基础上添加新值呢?首先,通过%变量名%操作符获取到原有环境变量的值。然后加上新值后在定义给该变量名即可。举例:给path环境变量加入新值 set path=新值;%path%注意:这种配置方式只在当前dos窗口有效。窗口关闭,配置消失。程序如果想在任何盘符下运行,则需要设置classpath路径:classpath=.class文件的地址1.6 classpath环境变量的概述JVM查找类文件的顺序:(1)如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件。(2)如果配置了classpath环境,JVM会先在classpath环境变量值的目录中查找要运行的类文件。注意:值的结尾处如果加上分号,那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录下在查找一次。值的结尾出如果没有分号,那么JVM在classpath目录下没有找到要指定的类文件,不会在当前目录下查找,即使当前目录下有,也不会运行。建议:配置classpath环境变量时,值的结尾处不要加分号,如果需要访问当前目录可以用 “.”表示,即:set classpath. set classpath=.返回到当前目录。1.7 java语言初体验:HelloWorld错误提示:NoSuchMethodError:main(缺少主方法)编程时的小误区:注意阅读性(不建议一个方法体中有两个主方法),注意大小写,注意单词的拼写,程序独立运行的条件:public static void main(String args) 1.8 问题和总结:1,问题:classpath和path的具体区别?2,问题:主函数是什么?主函数有什么特点?主函数什么时候用?主函数怎么用?main方法是什么? 是定义在类中的一个独立的代码。可以让该类独立运行。这个独立代码的名字是main。main方法有什么特点?该方法的格式是固定的。它是可以保证所在类能独立运行。它是该类的接口。它被JVM所调用。main方法怎么用(这个技术怎么在程序中实现)?直接在定义的类中,书写public static void main(String args)main方法什么时候用?当一个类需要被独立运行时,这时该类中一定要定义main方法。3,javac后面要跟.java扩展名,因为javac命令只对.java文件进行编译。第二天:Java语言基础2.1 java语言基础组成2.1.1关键字其实就是某一个计算机语言对指定的单词赋予可特殊的含义。 特点:体现上都是英文小写的单词。2.1.2标识符就是在程序中所起的名字。由26个英文字母大小写,数字:0-9 符号:_ $ 组成定义合法标识符规则:1,数字不可以开头。2,不可以使用关键字。3,Java中严格区分大小写。注意:在起名字的时,为了提高阅读性,要尽量有意义。Java中的名称规范:包名:多单词组成时所有字母都小写。xxxyyyzzz类名接口名:多单词组成时,所有单词的首字母大写。XxxYyyZzz变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写。xxxYyyZzz常量名:所有字母都大写。多单词时每个单词用下划线连接。XXX_YYY_ZZZ2.1.3注释1,注解,说明,解释。 /:注解一行,单行注释;/*.*/:注解一段,多行注释(有开头,有结尾)/*.*/:文档注释,java中所特有的注释方式。通常用于对程序进行简单说明,并可以建立说明文档。如:/* 这是一个HelloWorld小程序,author 张三version V1.0 */ 2,用于调试程序。注释的细节:注释的嵌套。单行注释可以嵌套。单行注释中可以有多行注释。多行注释中可以有单行注释,多行注释中不可以有多行注释。2.1常量表示不能改变的数值。java中常量的分类:1,整数常量。所有整数2,小数常量。所有小数3,布尔(boolean)型常量。true和false4,字符常量。将一个数字字母或者符号用单引号()标识。5,字符串常量。将一个或者多个字符用双引号()标识。6,null常量。只有一个数值:null。对于整数:有四种表现形式。二进制:0,1 ,满2进1.八进制:0-7 ,满8进1. 用0开头表示。十进制:0-9 ,满10进1.十六进制:0-9,A-F,满16进1. 用0x开头表示。进制转换输出语句:System.out.println(Integer.toBinaryString(60);System.out.println(Integer.toHexString(60);/十六进制以0x开头。System.out.println(Integer.toOctalString(60);八进制以0开头。负数的二进制:对应的正数取反加1。负数的最高位都是1。2.2变量概念:1,内存中的一个存储区域。区域中不是什么量都可以存储的,需要明确是哪一种 的类型。2,该区域有自己的类型和名称(变量名)。3,该区域的数据可以在同一类型范围内不断变化。(1)为什么要定义变量呢?答:用来不断的存放同一类型的常量,并可以重复使用,满足不同的用户需求。(2)使用变量注意:1,变量的作用范围(一对之间有效) 2,初始化值(3)定义变量的格式:数据类型 变量名 = 初始化值;注:格式是固定的,记住格式,以不变应万变。(4)理解:变量就如同数学中的未知数。(5)什么时候需要定义变量?当要参与运算的数据不确定的时候,用定义变量的形式来表示该数据。2.3类型转换 Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。 注:强制类型转换时,转换字符必须加括号,如:byte b=3; b= (char)(b+1);2,字符串和任何数据进行“+”,都是相连接。byte b1=3;/在赋值过程中,java在编译时期会检查该常量是否超出byte类型的范围,如果没有可以赋值。例如此例在byte范围之内,就把值3赋给b1;byte b2=4;byte b;b=(byte)(b1+b2);/b1,b2是变量,变量的值不确定,无法赋给b,需要强制类型转换。3,表达式的数据类型自动提升所有的byte型、short型和char的值将被提升到int型。如果一个操作数是long型,计算结果就是long型;如果一个操作数是float型,计算结果就是float型;如果一个操作数是double型,计算结果就是double型。自动类型提升byte b = 3;int x = 4;x = x + b;/b会自动提升为int类型进行运算。强制类型转换byte b = 3;b = b + 4;/报错b = (byte)(b+4);/强制类型转换,强制将b+4的结果转换为byte类,再赋值给b。b=3+4 ,3和4都是常量,所以java在编译时期会检查该常量的和是否超出byte类型的范围。如果没有可以赋值。b=b1+b2不可以,是因为b1和b2是变量,因为变量的值会变化,不确定具体的值,所以默认使用int类型进行存储。2.4 运算符2.4.1 算术运算符+ - * / %(模,取余)+ 自增 - 自减 (当自增自减参与运算的时候,符号在前在后是有区别的)int x=4280;x=x/1000*1000;System.out.println(x);System.out.println(1%5);/1System.out.println(23%5);/3int a=3;b=1;b=+a; /先自增,再赋值。b=a+; /先临时存储,再自增,再将temp赋给变量。运算过程:因为a在前,+在后,说明a的数值需要参与+意外的运算,比如赋值给b的运算。所以,运算过程是这样的,1,先将a变量中的数据,进行临时存储。 temp = a;2,自增运算。 a=a+1; a=4;3,将临时存储的值赋给b; b=3;2.4.2 赋值运算符= += -= *= /= %=x+=2;/将左右两边的和赋给左边。x=x+2;short s=3;s=s+6;/编译错误,丢失精度。s+=6;/s=s+6;编译通过,因为+=是赋值运算,会有一个自动转换动作。2.4.3比较运算符 = = = !=该运算符运算后的结果要么是true,要么是false。=和equals的区别:A.=可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同。B.对于String a = “a”; Integer b = 1;这种类型的特有对象创建方式,=的时候值是相同的。C.基本类型没有equals方法,equals只比较值(对象中的内容)是否相同(相同返回true)。D.一个类如果没有定义equals方法,它将默认继承Object中的equals方法,返回值与=方法相同。 =和equals的实质。总之,=和!=比较的是地址.也可认为=和!=比较的是对象句柄;而equals()比较的是对象内容.或者说,=和!=比较的是栈中的内容,而equals()比较的是堆中的内容. =操作符。专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相当,只能用=操作符。 Java的基本数据类型为(char,byte,short,int,long,float,double,boolean)。构造器形成的差别。对于String和Integer来说,由于他们特有的创建对象的方式。使用构造器和不使用构造器得到一个对象,=方法比较所产生的结果是不同的。 String a = “abc”; String b = abc; 此时a=b得到结果为true。String a = new String(abc); String b = new String(abc);此时a=b得到的结果为false。Integer a = 1; Integer b = 1;此时a=b的结果是true。Integer a = new Integer(1); Integer b = new Integer(1);此时a=b得到的结果为false。 equals方法。用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。例如,对于下面的代码:String a=new String(foo);String b=new String(foo);两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,他们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a=b即返回false,而这两个对象中内容是相同的,所以,表达式a.equals(b)将返回true。 在实际开发中,我们经常要比较传递进行来的字符串内容是否相等,许多人稍不注意就使用=进行比较了,这是错误的,有大量这样的错误。记住,字符串的比较基本都是使用equals方法。 如果一个类没有定义equals方法。它将继承Object类的equals方法,Object类的equals方法的实现代码如下:boolean equals(Object obj)return this=obj;这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object类继承的)就是使用=操作符,也是比较两个变量指向的对象是否是同一个对象,这时候使用equals和使用=会得到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你自己写代码来决定在什么情况即可以认为两个对象的内容是相同的。2.4.4 逻辑运算符用来连接布尔boolean类型的表达式。&(与)(两边有假为假) |(或)(两边有真为真)(两边都要运算)&(短路&):左边为false,结果为false;左边为true,运算右边; &:无论左边结果是什么,右边都运算,简单记录:单&左右两边都运算;|(短路|):当左边为true,右边不运算,结果为true。(异或):两边相同运算结果为假,不同为真。!(非):用于判断事物的另一面。2.4.5 位运算符左移::其实就是乘以2的移动的位数次幂。3:其实就是除以2的移动的位数次幂。(需要注意高位的符号值)无符号右移:最高位全补0。&(与运算);|(或运算)(异或运算):一个数异或另一个数两次,还是原来的数。如:633 = 6 363 = 62.4.6 三元运算符(条件表达式)?表达式1:条件表达式2;举例:int x=1;y;y = x1?100:200;程序练习:1,最有效率的方式算出2乘以8等于几?System.out.println(2100;参数类型:是形式参数的数据类型。形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。实际参数:传递给形式参数的具体数值。return:用于结束函数。可以将具体的结果返回,并结束功能(函数)。返回值:该函数运算后的结果,该结果会返回给调用者。return的功能:1,将值返回给调用者,2,结束函数。4.2 函数的特点1,定义函数可以将功能代码进行封装。2,便于对该功能进行复用。3,函数只有被调用才会被执行。(调用函数时要明确函数名称,明确函数的参数)4,函数的出现提高了代码的复用性。5,对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的 return语句如果在最后一行可以省略不写。如果函数有具体的返回值类型时,那么必须写return语句,以及具体的返回值。注意:1,函数中只能调用函数,不可以在函数内部定义函数。2,定义函数时,函数的结果应该返回给调用者,交由调用者处理。4.3 函数的应用必须要掌握一个基本思想:不要把代码都写在主函数当中。只要是功能,都用函数来体现。主函数只用来调用已定义的功能,让该功能运行起来。定义功能的技巧:如何定义一个功能:只需两个明确即可。1,明确该功能的结果是什么?其实就是在明确java函数的返回值类型。2,明确该功能中是否需要未知内容参与运算?其实就是在明确java函数的参数列表(参数的个数,参数的类型)注意:定义功能时,功能中需要什么就定义什么,不需要的不要定义。至于功能调用者怎么操作,那是调用者的事,功能中不要去体现。eg:需求:定义一个功能,可以实现两个整数的加法运算。分析:1,该功能的运算结果是什么?两个数的和,也是一个整数(int)2,在实现该功能的过程中是否有未知内容参与运算?加数和被加数是不确定的。(两个参数int,int)代码:int getSum(int x,int y) return x+y; 4.4 函数的重载(overload)重载的概念:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。(函数的重载只跟参数类型和参数个数有关。)重载的特点:与返回值类型无关,只看参数列表。重载的好处:方便于阅读,优化了程序设计。Eg:public static void show(int x,char y,double z)。下列哪个答案和给定的函数重载了?A. public static int show(char y,int x,double z)return 1;/(参数列表是有顺序的)重载了。参数类型不同。而且和返回值类型无关。B. public static void show(int a,char b,double c)没有,和给定的函数一模一样。出现在同一类会编译失败,因为有了调用的不确定性。C. public static void show(double z,int x,char y) 重载了。参数类型不同。D. public static double show(int a,char y) 重载了,参数个数不同。E. public static void show2(int x,char y,double z) 没有,函数名不同。 注:定义函数为了增加其阅读性,函数名称要求能直接反应出该函数功能最好。所以名称一定要有意义。所以功能相同的函数名称应该是一致的。4.5 主函数(main)剖析public static void main(String args) public:权限修饰符,公共,主函数的权限足够大。static:静态修饰符,调用主函数不需要创建所在类对象对象,直接用类名即可。void:主函数是没有返回值的。main:固定的函数名称。jvm认识该名称并认识该名称定义的固定格式。(String args):主函数的参数列表,是一个字符串数组类型的参数。System.out.println(输出内容);/如果我们输出的是一个引用型的变量的话,print会自动调用toString方法,将其变成字符 串进行打印输出。如:Person p = new Person(34);传入的是p的话,输出的是字符串。第五天:数组5.1数组的定义数组的理解,四部曲(是什么?特点?怎么用?什么时候用)?数组的概念:同一种类型数据的集合。其实数组就是一个容器。特点:1,这些数据必须是同一类型的,2,存储时必须明确元素的个数。怎么用:通过中括号的方式来表示数组。核心思想:通过数组固定的索引(角标),对数组中的元素进行访问(设置,获取)。基础思想:就是遍历。何时用:当要一次性定义很多同一类型的数据的时候需要用到数组。数组的好处:可以对存储到数组中的元素进行自动的编号。(从0开始。这个编号也称为索引,或者角标。)方便操作这些元素。在数组定义时,即明确了数组的长度,以及类型,还明确元素的内容。数组中有几个元素,其实数组最清楚。可以通过数组实体具备的一个属性 length 直接获取到数组的长度(元素的个数)arr.length格式1:元素类型 数组名 = new 元素类型元素个数或数组长度;示例:int arr = new int5;/右边定义了一个可以存储5个int类型元素的数组(也称实体)。/左边定义了一个数组,元素类型是int,名称是arr。arr0 = 80;名称为arr的数组,角标的位置为0,给该位置赋值为80。格式2:元素类型 数组名 = new 元素类型元素,元素,;int arr = new int3,5,1,7;int arr = 3,5,1,7;5.2 数组的内存分配及特点(栈,堆,方法区)Java的内存划分:1,寄存器:cpu涉及的区域。2,本地方法区:是和系统相关的代码存储区域。3,栈内存:存储的都是局部变量。变量运算区域一结束,就释放。局部变量:在方法上的参数,方法内的变量,语句中的变量。4,堆内存:存储的是数组和对象,简单说,堆内存中存储都是实体。实体就是可以存储多个数据地方。记住,只要是用new建立都存储在堆内存中。 特点:4.1,任何实体都有内存地址值。4.2,堆内存中的变量都有默认初始化值。 4.3,垃圾回收机制。5,

温馨提示

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

评论

0/150

提交评论