为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

java基础知识

2012-02-27 16页 doc 255KB 30阅读

用户头像

is_095618

暂无简介

举报
java基础知识【Gjava人才】 www.gjrencai.com java基础知识速成教程 1数据类型 1基本数据类型 3引用类型 3控制语句 3顺序结构 3选择结构 4循环结构 5面向对象 5面向过程和面向对象的区别 5类和对象 5成员变量 5方法 5方法的重载(overload) 5构造方法 5内存分析 6package 6import 6this 6static 6super 6面向对象的三大特征 6封装 6继承 6方法...
java基础知识
【Gjava人才】 www.gjrencai.com java基础知识速成教程 1数据类型 1基本数据类型 3引用类型 3控制语句 3顺序结构 3选择结构 4循环结构 5面向对象 5面向过程和面向对象的区别 5类和对象 5成员变量 5 5方法的重载(overload) 5构造方法 5内存分析 6package 6import 6this 6static 6super 6面向对象的三大特征 6封装 6继承 6方法的重写(override) 6多态 7抽象类 7接口 7面向接口编程 数据类型 基本数据类型 a) 数值型 i. 整型 1. byte 1个字节(256) -128-127 2. short 2个字节(65536) 正负3万 3. int 4个字节 正负21亿 4. long 8个字节 ii. 浮点型 1. float 4个字节 2. double 8个字节 注: 类型的自动转换 类型的强制转换 /* double d1 = 0.1; double d2 = 0.5-0.4; System.out.println(d2); if(d1==d2){ System.out.println("dddd"); }else{ System.out.println("eeeee"); } */ float f1 = 0.134F; float f2 = (float)0.134; double d1 = 0.345F; byte b = 123; //int可以自动转换为byte,short,char。只要不超过它们的述范围。 double d = 23234; double d2 = 123L*234; //表达式类型的自动提升 long i = 234231L*234233*23423; // System.out.println(i); b) 字符型 2个字节 65536 unicode字符集 c) 布尔型 true, false char c1 = 'a'; char c2 = '中'; char 中2= '国'; boolean b = true; if(b==true){ System.out.println("true"); } if(b){ //建议此种写法! System.out.println("true"); } 引用类型 控制语句 顺序结构 选择结构 1. 单选择结构 2. 双选择结构 3. 多选择结构 boolean b = true; if(b){ System.out.println("true"); } if(b){ System.out.println("true"); }else{ System.out.println("false"); } int age = 18; if(age>100){ System.out.println("老寿星"); }else if(age>80){ System.out.println("小寿星"); }else if(age>60){ System.out.println("老年人"); }else if(age>30){ System.out.println("中年人"); }else if(age>18){ System.out.println("青年人"); }else{ System.out.println("小屁孩"); } int grade = 1; //1,2,3,4,5 switch(grade){ //多值选择结构! case 1: case 2: System.out.println("学的凑合"); break; case 3: System.out.println("学的一般"); break; case 4: System.out.println("学的不及格"); break; case 5: System.out.println("太差了!"); break; } if(grade==1){ //switch可以完全使用if else if代替! }else if(grade==2){ } 循环结构 while do while for /* int i = 0; //初始化 while(i<10){ //条件判断 System.out.println(i); //循环体 i++; //迭代 }*/ /* for(int i=0;i<10;i++){ //初始化、条件判断、迭代 //循环体 System.out.println(i); } */ int a=0; do{ System.out.println(a); a++; }while(a<0); //先执行,后判断! while:先判断,后执行! 面向对象 面向过程和面向对象的区别 面向对象帮助我们从宏观上把握项目的整体关系,微观上实现仍然是面向过程。 类和对象 抽象(抽出事务象的部分)和具体。 类是对象的模板。 成员变量(field,属性) 要点: 1. 成员变量的自动初始化。整数:0,浮点数:0.0, Boolean:false. 引用类型:null char:\u0000 public class Person { int age=13; String name; int score; public static void main(String[] args) { Person p = new Person(); p.age = 23; p.name="张三"; System.out.println(p.name); } } 方法 public class Person { int age=13; String name; int score; void test1(){ System.out.println("Person.test1()"); } int test2(){ System.out.println("Person.test2()"); return 3; //return两个作用:返回值,结束方法的运行! } int test3(int a,double d){ System.out.println("Person.test2()"); return (int)(a+d); } public static void main(String[] args) { Person p = new Person(); p.age = 23; p.name="张三"; int a = p.test2(); System.out.println(p.name); } } Return既可以用于返回值,也可以用于终止方法的执行: void test2(){ if(man){ System.out.println("man"); System.out.println("man"); System.out.println("man"); } } void test3(){ if(!man){ return; } System.out.println("man"); System.out.println("man"); System.out.println("man"); } 方法的重载(overload) 方法名相同、形参列表不同(类型不同/个数不同/顺序不同)则构成重载 。 public class Calculator { int add(int a,int b){ System.out.println("sddsds"); return a+b; } int add(int a, int b, int c){ return a+b+c; } double add(double a, double b){ return a+b; } double add(double a, int b){ return a+b; } double add(int a, double b){ return a+b; } public static void main(String[] args) { Calculator c = new Calculator(); System.out.println(c.add(3, 4)); System.out.println(c.add(3, 4,5)); System.out.println(c.add(3.0, 4.0)); } } 构造方法(构造器 constructor) 构造方法是特殊的方法!!!特殊在什么地方: 1. 方法名必须和类名保持一致! 2. 无返回值(事实上,他是有返回值的。) 3. 需要通过new来调用! 4. 如果我们没有定义构造器,则编译器会帮助我们自动添加;如果我们手动定义构造器,则编译器不会帮助我们添加无参构造器。 public class Person { int age; String name; int score; void run(){ System.out.println("我在跑步!!"); } Person(int age){ this.age = age; System.out.println("正在构造一个person对象!"); } Person(){ } public static void main(String[] args) { Person p = new Person(); p.run(); } } 内存分析 堆:存放new出的对象。 栈:存放局部变量(方法内部定义的变量) 方法区:存放类的信息、static变量、字符串常量等。 public class Person { int age=13; String name; int score; public static void main(String[] args) { Person p = new Person(); p.age = 23; p.name="张三"; Person p2 = new Person(); p2.name="李四"; System.out.println(33==44); System.out.println(p==p2); String str = "张三"; String str2 = "张三"; String str3 = new String("李四"); String str4 = new String("李四"); System.out.println(str == str2); System.out.println(str3 == str4); System.out.println("哈哈"); } } package 包的两个基本作用: 1. 解决类的重名问题 2. 管理类 包的具体用法: 1. 使用package, 必须位于文件的第一句非注释性语句! 2. 包名的规范:域名倒着写+有意义的名字 常见的包: java.lang 核心包(不需要我们import,直接可以使用!) java.io 输入输出流 java.util 工具包 java.net 网络 java.awt java.sql import 用来引入其他包中的类,方便我们使用。 import test.Person; import test.*; 静态导入:import static , 导入某个类的静态属性和方法! this 用来指定当前的对象! 如果this位于构造方法内,则表示正要初始化的对象。 如果this位于普通方法内,则表示调用该方法的对象(即当前对象) package com.bjsxt.j2se; public class TestThis { private int a; private int b; private int c; TestThis(int a,int b){ this.a = a; this.b = b; } TestThis(int a,int b, int c){ this(a,b); //Constructor call must be the first statement in a constructor this.c = c; } public static void main(String[] args) { } } static static变量位于方法区,被所有的该类的对象共享,可以称为类属性(静态属性)、类方法(静态方法)。 Static变量可以使用:类名.变量名来引用。 static变量(方法)是从属于类的。可以通过:类.名字 来调用 普通变量(方法)是从属于对象的。可以通过:对象名.名字 来调用。 static方法中,不能调用普通方法或普通属性。 final final 修饰普通变量: 常量!! super 面向对象的三大特征 封装/隐藏 可以将类的内部实现细节进行封装(隐藏了内部实现的细节、复杂性),方便外部调用。这样的话,就利于软件的维护和扩展。 关键字 同一个类 同一个包 子类 所有类 private √ X X X default(默认,不需要写出来) √ √ X X protected √ √ √ X public √ √ √ √ 封装的使用方式: 1. 所有的属性都使用private。 但是一般会提供get/set方法便于访问和设置属性。 2. 除非确认你的方法要被外部调用,否则一般都可以使用private。 继承 子类扩展了父类。使用extends关键字。 JAVA类的继承中,只有单继承,没有多继承。 为什么需要继承? 1. 抽象概念,便于建模 2. 代码复用 Object类 Object是所有类的根类! 掌握:toString()方法的使用! 用来打印对象的字符串表示形式! 学习使用API文档 学习怎么查询API文档 学习使用DOC注释,生成项目的API文档(右键单击项目(export(java, javadoc(next,finish,yes) 方法的重写(override) 多态 多态的三个必要条件:继承、重写、父类引用指向子类对象。 public class TestOverride { public static void main(String[] args) { TestOverride to = new TestOverride(); NokiaMobile nm = new NokiaMobile(); Mobile op = new OppoMobile(); //编译时类型 变量名 = new 运行时类型(); op.call(233223); OppoMobile om = (OppoMobile)op; //强制转型 om.callByOppo(23423); // DazhaiMobile dm = new DazhaiMobile(); to.test(op); } void test(Mobile nm){ nm.call(888888); } /* void test(OppoMobile nm){ nm.call(888888); } void test(DazhaiMobile nm){ nm.call(888888); }*/ } class Mobile { public void call(int num){ System.out.println("使用手机打电话给:"+num); } } class NokiaMobile extends Mobile { public void call(int num){ // super.call(num); System.out.println("使用诺基亚手机打电话给:"+num); } } class OppoMobile extends Mobile { public void call(int num) { System.out.println("使用Oppo手机打电话给:"+num); } public void callByOppo(int num) { System.out.println("333333使用Oppo手机打电话给:"+num); } } class DazhaiMobile extends Mobile { public void call(int num) { System.out.println("使用Dazhai手机打电话给:"+num); } } 抽象类 抽象类:包含抽象方法的类。抽象方法必须被子类重写。 注意: 1. 抽象类可以包含构造方法,但是不能被实例化。 2. 抽象类包含了:具体实现和规范!! 接口 为什么需要接口? 项目需求是多变的!我们要从这些多变的需求中抽象出不变的内容,以不变应万变,提高我们的开发效率。 接口是做什么的? 用来描述规范!体现了现实中这样的逻辑“如果你是…则必须能….”。 接口: 只包含了抽象方法,常量!! public interface Fly { public static final int MAX_HEIGHT=100; int MIN_HEIGHT=1; //常量总是:public static final void fly(); //方法总是:public abstract void stop(); void startup(); void upup(); void down(); } 如何使用接口? class Airbus implements Fly { @Override public void down() { } @Override public void fly() { } @Override public void startup() { } @Override public void stop() { } @Override public void upup() { } } 一个类可以实现多个接口 接口可以多继承!!! interface IA{ void aaa(); } interface IB{ void bbb(); } interface IC extends IA,IB { } 面向接口编程!!! �整形常量默认是Int �BigDecimal �浮点数是有误差的。 浮点数默认类型是:double 浮点数尽量不要用于比较 �除非确认不需要break。否则每个case都加。不加的话,会出现case穿透现象。 �重载与否,跟返回值类型无关!!
/
本文档为【java基础知识】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索