JAVA串讲基本语法.ppt

上传人:sccc 文档编号:5020071 上传时间:2023-05-29 格式:PPT 页数:44 大小:338.51KB
返回 下载 相关 举报
JAVA串讲基本语法.ppt_第1页
第1页 / 共44页
JAVA串讲基本语法.ppt_第2页
第2页 / 共44页
JAVA串讲基本语法.ppt_第3页
第3页 / 共44页
JAVA串讲基本语法.ppt_第4页
第4页 / 共44页
JAVA串讲基本语法.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《JAVA串讲基本语法.ppt》由会员分享,可在线阅读,更多相关《JAVA串讲基本语法.ppt(44页珍藏版)》请在三一办公上搜索。

1、,JAVA基本语法,JAVA标识符,1、标识符:编程语言中用来标识变量、函数、常量等的名字,就是标识符。1-1:标识符的命名规则:a、标识符由字母、下划线、美元符号($)和数字构成。b、标识符由字母、下划线、美元符号($)开头 c、大小写敏感 1-2:关键字:编程语言中预留的标识符,通常在编程语言中代表某种特定的用途如:public,class,private 注:关键字不能被程序员占用的。2、数据类型:2-1:基本数据类型:数值类型:整型:byte、short、int、long,浮点型:float、double 其它类型:字符型:char 布尔型:boolean 2-2 引用类型 java中

2、所有的类都是属于引用类型。如:String,Date,JAVA标识符,1、变量:是内存中一块区域,其大小由变量数据类型决定,程序员通过变量名来引用这块区域,并向其中读或写数据。1-1:定义变量的语法:类型 变量名=初始化值;注:变量未初始化是不能使用的。2、常量:是值不可变的变量。2-1:定义常量:final final 变量名=初始化值;常用的地方是,在一个类中定义一个类常量(即定义一个类的成员为常量),变量、常量,变量、常量,public class VarTest public static void main(String args)/TODO Auto-generated metho

3、d stubint radiu=10;String info=圆的半径为:;System.out.println(info+radiu);String info2=圆的面积为;double area=radiu*radiu*PI;/double area1=radiu*radiu*Math.PI;/Math定义了一个PI常量System.out.println(info2+area);static final double PI=3.1415926;/类常量,通常为static,数学运算符:+,-,*,/,%(取模),+,-关系运算:,=,!=condition?Expression1:exp

4、ression2(三元运算符)逻辑运算符:|,&,!位运算符:&,|,(异或),(非)(右移运算符),(右移运算符)注:按位与&及按位或|除了位运算外还可以用于一般的逻辑运算其效果与&和|大致一致。区别在于:&和|具备短路运算的特性而&和|没有。Eg:当x=0 比较 x!=0&1/xx+y 和 x!=0&1/xx+y 两个表达式的执行状态,运算符,运算符,示例,public class javademo1public static void main()System.out.println(这是一个最简单java程序);,3、书写规范:3-1:前面带空格.;3-2:要与对应的所在行首对齐;3-

5、3:内的语句要相对于有一个缩进(tab或shift+tab);3-4:子模块相对于父模块要有一个缩进;3-5:一般来说每条语句占一行,一行写多条语句则语句间要有空格。3-6:一条语句过长时,可以占多行(尽量避免一行的长度超过80个字符,因为很多终端和工具不能很好处理之)。可以依据如下一般规则断开之:-在一个逗号后面断开-在一个操作符前面断开如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进8个空格。标识符命名要符合业务意义;以下是断开的一些例子:someMethod(longExpression1,longExpression2,longExpression3,longEx

6、pression4,longExpression5);longName1=longName2*(longName3+longName4-longName5)+4*longname6;/PREFFER,示例,1、数值类型之间的隐式转换:(按由左至右或箭头方向)(由宽度由窄到宽,由整数到小数)char byte-short-int-long float-double判断如下表达式的最终数据类型:12+22+23.2f a+12,隐式类型转换,引用类型的隐式转换:子类类型可自动隐式转换为父类类型:eg:public class TypeTest public static void main(Str

7、ing args)/TODO Auto-generated method stubShape shape;Circle circle=new TypeTest().new Circle(red,12);shape=circle;/子类自动隐式转换为父类System.out.println(shapecolor is+shape.getColor();System.out.println(circlecolor is+circle.getColor();,隐式类型转换,class Shape String color;public Shape(String color)this.color=co

8、lor;public String getColor()return color;public void setColor(String color)this.color=color;class Circle extends Shapeint radius;public Circle(String color,int radius)super(color);this.radius=radius;public int getRadius()return radius;public void setRadius(int radius)this.radius=radius;,隐式类型转换,语法:(类

9、型)表达式1、数值类型的强制转换:一般来说,由小数到整数,或取值范围宽的类型到取值范围窄的类型都须要强制转换 float a=23.2;/不能由double型数据直接赋给浮点型 float a=(float)23.2;判断下面的赋值表达式哪些可行 int a=12.3;-float b=23.2/2+11;-int c=10 byte d=c;,显式(强制)类型转换,2、引用类型的强制转换:子类类型 对象=(子类类型)父类对象(前提:某父类型的引用变量值由子类引用变量类型转换而来,那么该父类型的引用变量可以被强转为子类型)如:接前例:父类:Shape 子类:Circle例1:Shape sha

10、pe;.Circle cir=new Circle();shape=cir/将子类引用变量的值类型转换后赋给父类引用变量 Circle circle2=shape;/错误,父类不能隐式转换为子类 Circle circle2=(Circle)shape;/正确 java.sql.Date date=(java.sql.Date)new java.util.Date();/不正确,显式(强制)类型转换,注:没有继承关系的类型之间不能类型转换如:String date=(String)new Date();-class Rectangle extends Shape则:Rectangel rec=

11、(Rectangle)circle;,流程控制语句,分支语句:if(condition1).else if(condition2).else多分支语句:switch(choice)/注:choice只能是枚举值或整型,而short,byte,char会自动转型为int case value1:break;case value2:语句;break;语句;default:.break;,循环控制语句:while(condition)语句;.,流程控制语句,do 语句;while(condition),for(初始化语句,;condition;自增语句,)语句;,for循环例子:,while循环例子

12、:根据输入的固定利率和每年存入的金额及退休后所须存储目标余额,计算要多少年后退休?,数组:常见的一种数据结构,用来顺序存储同类型的值的集合。在内存占用一段连续的内存区域。(java中数组也是一个对象)1、数组的声明:数据类型 数组名;或 数据类型 数组名=new 数据类型数组大小;/初始化或数据类型 数组名=new 值1,值2,值n;/初始化,数组,在JDK5.0中提供了一种新的循环结构用来遍历集合中的元素非常有效,当然数组也是一种集合,故也可应用。for(数据类型 item:collection)语句;,数组,面向过程:程序设计者必须指定计算机执行的具体步骤,程序设计者不仅要考虑程序要“做什

13、么还要解决怎么做的问题,根据程序要做什么的要求,写出一个个语句,安排好它们的执行顺序.怎样设计这些步骤,怎样保证它的正确性和具有较高的效率,这就是算法需要解决的问题.面向对象:首选抽象出问题领域内的相关的对象和它们的属性和行为,并找出对象之间的关系。这样当解决问题时,只须调用相关对象去完成即可。面向对象设计实现了对象级别的封装和复用(面向过程只能实现方法级别的复用),更贴近人解决问题的思考方式,同时更易于管理,复用的程度也更高。,对象与类,对象与类,1、对象的三个主要特性:对象的行为、对象的状态、对象的标识2、类:是对具有相同特征和行为的对象集合的抽象。可以还可以将之看成是生成对象的代码模块。

14、2-1:类的三大特征 封装:隐藏对象内部的细节,向外部提供接口,让调用者访问 继承:从已有的类扩展出一个新类,新类具备原类的所有特性,并扩展出自己新的特性 多态:对同一个消息,多种不同的响应方式2-2:类与类之间的关系:is-a:继承 has-a:又分为聚合和组合 另外还有一种依赖关系,对象与类,2-2-1:a、聚合:一个类包含其它类,但没有必须的依存关系。公司-员工 足球队-队员 b、组合:一个类包含其它类,存在必须的依存关系 人-人脑 2-2-2:关联(依赖):最弱的关系,一个类在某种情况下要向其它的类发送消息。公司的经理-考核员工 公司的经理,对象与类,3、类的构造:3-1:默认构造方法

15、:不带参数的构造方法。若未定义构造方法,则编译默认建立一个空的构造方法。3-2:构造方法重载:3-3:子类构造方法中必须在第一行调用父类的构造方法,若父类有默认构造方法,则可省略调用代码,由编译隐式在子类构造方法中调用父类的默认构造方法。注:一个.java文件夹中只能一个,4、变量分类:4-1:基本类型变量和引用类变量 基本类型变量:存放基本类型数据的值。引用类型变量:存放类实例的引用。4-2:局部变量和全局变量:局部变量:在方法内部定义的变量称为局部变量。全局变量:类的成员称为全局变量。注:全局变量若没有在定义时初始化则会有一个默认初始化值。引用类型变量初始化值为null。基本类型变量中数值

16、型一律初始化为0,char型初始化为,boolean为false,对象与类,请判断输出结果:class Number public int i;public Number(int i)this.i=i;,对象与类,String aa=aa;String bb=bb;aa=bb;bb.substring(0);int m=1;int n=10;m=n;+n;Number num1=new Number(10);Number num2=new Number(12);num2=num1;num1.i=22;System.out.println(aa=+aa+,bb=+bb);System.out.p

17、rintln(m=+m+,n=+n);System.out.println(num1.i=+num1.i+,num2.i+num2.i);,对象与类,5、访问控制:访问控制符在类的内部同一包内子类 任意位置 private yes default yes yes protected yes yes yes public yes yes yes yes在java中类、类的成员变量、类的成员方法都用上述的访问控制符进行访问权限的控制,若省略访问控制符则为default,对象与类,对象与类,请找出错误:,在first.java中class Parent private int a;int b;pro

18、tected int c;public int d;class Parent2 public static void main(Strings args)Parent p=new Parent();p.a=10;p.b=10;p.c=10;p.d=10;,在scecond.java中package m;class Child extends Parent public static void main(Strings args)Parent p=new Parent();p.a=1;p.b=1;p.c=1;p.d=1;,6、多态:6-1:方法重载:同一个类中对定义多个同名方法,它们的参数类型或

19、参数的个数不一致。6-2:方法重写:子类中重新定义父类的一个方法(即方法签名相同的方法。)。限制:不能更改被重写方法的返回类型。不能有比被重写方法的更严格的访问控制。,对象与类,7、抽象类:多用来描述一个抽象的通用的概念,该概念泛指一类事物,但不指向特定的对象。如:动物、人。另外,JAVA中还常用用抽象类来给定某个接口的默认实现,这样用只须从抽象类继承,重写想要重写的方法,而不必实现所有的方法。7-1:抽象类是用absract修饰的类。它不能被实例化,但可声明引用变量。7-2:抽象类中可以有两种类型的成员方法:抽象方法:用abstract修饰的方法,只有声明没有实现(只在抽象类中声明)。普通方

20、法:有声明有实现。7-3:可以有成员变量(属性),请注意abstract不能修饰成员属性 7-4:若子类若不是抽象类则必须实现所有的抽象方法。,类与对象,找出错误并改正public abstract class Animal public abstract String color;public abstract void eat();public abstract void bid();class Aa extends Animalpublic static void main(String args)Aa aa=new Aa();,类与对象,关键字:super,this,staticsup

21、er:父类的引用this:当前类的引用static:定义静态资源 包括:静态内部类、静态成员变量、静态成员方法.-静态资源是依附类的,在类加载的同时被加载,为该类所有实例所共用。可通过类名来调用,当然也可通过实例来调用。-静态成员方法只能直接访问类中的静态资源,对象与类,8、接口:用于定制一组操作契约,也可说是制定一个操作标准。8-1:按接口编程思想 编写代码时尽量使用接口,不要过多涉及具体实现,这样的代码更易维护。8-2:可将接口看成是一个特殊的抽象类:-接口内可以声明成员变量,且都为:public static final-接口内只能声明方法,不能实现任何方法。-一个类可以同时实现多个接口

22、,只能继承一个抽象类。-接口的实现类必须实现接口中声明的所有方法,对象与类,看以下几段代码,选择正确的。,对象与类,A)public interface aa int id=10;public void mm();public void nn();B)public interface aa pubic final id;public void mm();public void nn();,c)public interface aa public static final int id=0;public void mm();public void nn();B)public interface

23、aa protected static final int id=10;public void mm();public void nn();,示例:,public abstract class Animal private String color;public abstract void eat();public abstract void bid();public Animal(String color)this.color=color;class Cat extends Animalpublic Cat(String color)super(color);public void bid(

24、)System.out.println(猫喵喵叫);public void eat()System.out.println(猫吃鱼);,class Dog extends Animalpublic Dog(String color)super(color);public void bid()System.out.println(狗汪汪叫);public void eat()System.out.println(狗吃肉);,public class MySelf public Animal pet;public static void main(String args)Cat cat=new C

25、at(yellow);MySelf self=new MySelf(cat);self.petEnjoy();self.feedPet();Dog dog=new Dog(black);self.setPet(dog);self.petEnjoy();self.feedPet();,示例:,public MySelf(Animal pet)this.pet=pet;public void petEnjoy()pet.bid();public void feedPet()pet.eat();public Animal getPet()return pet;public void setPet(A

26、nimal pet)this.pet=pet;,容器,Collection,List,Set,ArrayList,LinkedList,HashSet,TreeSet,Map,HashMap,TreeMap,Collection:定义了存取对象的最基本的方法 子接口List和Set分别定义了存储方式。List顺序存储对象(即存储顺序同插入顺序),可插入重复对象。Set-存储的对象没有特定顺序,不可以重复。Map定义了按”键(key)值(value)”方式成对存取数据的数据结构。,容器,1、Collection中定义的常见方法:int size();boolean isEmpty();void

27、clear();boolean contains(Object Element);boolean add(Object Element);boolean remove(Object Element);Iterator iterator();boolean containsAll(Collection c);boolean addAll(Collection c);boolean removeAll(Collection c);boolean retainAll(Collection c);Object toArray();,容器,容器,注:集合中元素的删除remove和contains方法涉及

28、到集合元素的比较,若元素为用户定义的类型,则请重写它的equals方法和hashCode()。请记住以下的一个原则:两个对象它们的equals为true,则它们的hashCode()方法也相等。示例:,迭代器:用于遍历集合中的所有元素,不须考虑集合的实现方式。Iterator接口:Iterator boolean hasNext();Object next();remove();Iterator ite=集合引用.iterator();注:每次remove之前必须调用next()另外还有专用于List的ListIterator接口。,容器,HashSet:(无自然顺序)java中采用散列表(哈

29、希表)为数据结构的集合类型。特点:在不知道对象的位置的情况下可以实现快速查找对象。其查找方式就是利用的对象的hashcode(由hashCode()方法生成)计算对象的位置。默认hashCode()方法继承自Object取对象的引用为其hashcode。若对象用于某个散列结构中,请在其类中重写hashCode()方法。其原则是:生成的 hashcode尽量平均分布,少重复,且要根据某个或几个实例字段生成。生成算法相当复杂,一个建议是:采用一个或多个可以标识对象的String实例字段的hashcode的和做为对象的hash codeSet加载因子默认值为0.75,默认哈希表元为101,容器,Tr

30、eeSet:(有序)可以在元素插入时就对元素排序,这样迭代时就按照排序好的顺序取出元素。(红黑树).即元素必须是可比较的。排序时的比较:public interface Comparablepublic int compareTo(Object obj);元素须实现Comparable接口,调用其compareTo()进行比较,如:元素a与元素b比较,若结果0,a在b的后面或在实例化时为构造函数指定比较器(实现Comparator接口的类),容器,映射表:Map 用于快速的按键(key)查找元素。HashMap:对key进行散列 TreeMap:对key排序注:在JAVA中Map可以有三种视图:键集、值集、键/值集(Entry)Set keySet();(注:这里得到的键集不是HashSet也不是TreeSet,而是实现了set接口的其它类)Collections values();Set entrySet();,容器,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号