Java学习笔记
2015-07-11 22:29
411 查看
java基础
java简介
java是面向对象的语言,是由Sun公司在95年出品的,2009年Sun公司被ORACLE公司收购。java SE是基础部分,java EE是java的企业版,相比java SE,java EE增加了JSP、EJB等技术。
JVM:Java虚拟机,JDK:Java开发工具包,JRE:Java运行环境。
Java开发环境搭建
安装JDK配置环境变量
J***A_HOME配置JDK安装路径
PATH配置JDK命令文件的位置(bin目录)
CLASSPATH配置类库文件的位置(lib目录)
利用文本文件编辑Java程序
用文本文件去编写Java的源代码文件,源代码文件以.java结尾。用编译器(javac命令),对源代码文件进行编译的操作。把它编译成以.class结尾的字节码文件,字节码文件与平台无关,实现跨平台。
在不同的平台中用不同的解释器(java命令),去解释运行字节码文件,就可以得到程序运行的结果。
Eclipse
Eclipse开发Java程序分为四步创建一个Java项目
创建程序包
编写Java源程序
运行Java程序
Java基本语法
约定俗成的命名规则
类和接口名。每个字的首字母大写,含大小写。方法名。首字母小写,含大小写,少用下划线。例如,myName,setTime。这种方法叫驼峰式命名。
常量名。基本数据类型的常量名全部大写字与字至之间用下划线分隔。对象常量可大小混写。例如,SIZE_NAME。
变量名。可大小混写,首字符小写,字间分隔符用字的首字母大写。不用下划线,尽量做到见名知义。
变量
基本数据类型 | 默认值 | 存储格式 | 数据范围 |
---|---|---|---|
short | 0 | 2个字节 | -32768到32767 |
int | 0 | 4个字节 | -2147483648到2147483647 |
byte | 0 | 1个字节 | -128到127 |
char | |||
long | |||
float | |||
double | |||
boolean |
Java运算符
算术运算符
+、-、*、/、%、++、–。赋值运算符
=、+=、-=、*=、/=、%=。比较运算符
,<,==,!=。(==和!=的操作数可以是数值类型和引用类型)逻辑运算符
&&、||、!、^(一真一假结果为真,其他的都是假)条件运算符
布尔表达式?表达式1 : 表达式2运算符的优先级
多总结就行了Java控制语句
条件控制语句
[code]if(条件){ 条件成立时执行的代码 }
[code]if(条件){ 代码块1 } else{ 代码块2 }
[code]if(条件1){ 代码块1 } else if(条件2){ 代码块2 } ... else { 代码块n }
[code] switch(表达式){ case 值1: 代码块1 break; case 值2: 代码块2 break; ... default: 默认执行的代码块 }
循环控制语句
[code]while(条件){ 代码块 }
[code]do{ 代码块 }while(条件);
跳转语句
break、continueJava数组
数组定义和初始化
声明数组:[code]数据类型[ ] 数组名; //或者: 数据类型 数组名[ ];
分配空间:
[code]数组名 = new 数据类型 [ 数组长度 ];
声明的同时初始化
[code]int [] ages = {12,18,9,33,45,60}; //声明并初始化了一个数组,它有6个元素 char [] symbol = new char[10] //声明并分配了一个长度为5的char型数组
数组遍历
[code]int [] ages = {12, 18, 9, 33, 45, 60}; for(int i = 0; i < ages.length; i++){ //ages.length是获取数组的长度 System.out.println("数组中第"+(i+1)+"个元素是 "+ages[i]); //数组下标是从零开始,一定要注意 }
[code]for(元素类型 元素变量:遍历对象){ 执行的代码 }
Java方法
方法的定义
[code]访问修饰符 返回值类型 方法名(参数列表){ 方法体 }
参数和参数列表
调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应调用方法时,实参不需要指定数据类型
当方法参数有多个时,多个参数间以逗号分隔
返回值
如果方法的返回类型为 void ,则方法中不能使用 return 返回值。方法的返回值最多只能有一个,不能返回多个值。
方法返回值的类型必须兼容,也就是说如果返回值类型为 int ,则不能返回 String 型值。
调用带返回值的方法时,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理。
Java类和对象
对象是一个具体的,确定的物体。类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。
[code]public class 类名{ //定义属性部分(成员变量) 属性1的类型 属性1; 属性2的类型 属性2; ... //定义方法部分 方法1; 方法2; ... }
对象
要使用一个对象,首先要先创建一个对象。[code]类名 对象名 = new 类名();
构造方法
1.构造方法的名称与类名相同,并且没有返回值。2.如果在定义类的时候没有写构造方法,系统会默认生成一个无参构造方法,不过这个构造方法什么也不会做。
3.当有指定的构造方法时,系统不会再添加无参构造方法。
4.构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法。
Java封装
面向对象有三大特性:封装、继承、多态。封装的好处:
隐藏类的实现细节
让使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作
便于修改,增强代码的可维护性
如何实现封装:
修改属性的可见性,在属性的前面添加修饰符
创建 getter/setter方法,用来读写属性
在 getter/setter方法里加入属性的控制语句,例如可以加一个判断语句,对于非法输入给予否定。
包
Java访问修饰符
访问修饰符 | 本类 | 同包 | 子类 | 其他 |
---|---|---|---|---|
private | √ | |||
默认 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
this关键字
使用this.属性操作当前对象的属性,this.方法调用当前对象的方法。内部类
内部类的主要作用有:内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
内部类的方法可以直接访问外部类的所有数据,包括私有的数据
内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
使用方法:
定义成员内部类后,必须使用外部类对象来创建内部类对象,即
内部类 对象名 = 外部类对象.new 内部类()
如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字
静态内部类:
静态内部类不能直接访问外部类的非静态成员,但可以通过
new 外部类().成员 的方式访问
如果外部类的静态成员与内部类的成员名称相同,可通过类名.静态成员访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过成员名直接调用外部类的静态成员
创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
Java继承
语法[code]class 子类 extend 父类{ ... }
子类重写父类的方法:
重写的方法一定要与原父类的方法语法保持一致,比如返回值类型,参数类型及个数,和方法名都必须一致。
继承的初始化顺序
系统会先创建父类对象,在创建子类对象,先初始化属性,在调用构造函数
Java多态
父类的引用指向子类的对象父类调用子类的对象的继承方法或重写方法
多态引用类型转换
例子:[code]Dog a = new Dog(); Animal b = a; //自动类型提升 向上类型转换(无风险) /* Dog c = b; //将父类引用转换成子类引用,编译器不允许这样做 */ Dog c = (Dog)b; //在父类前加上小括号,里面加上子类类型,实现强制转换 //向下类型转换 /* Cat d = (Cat)b; //虽然编译器不会报错,但运行会出问题,因为b是指向Dog类的,它们是不同类型的对象,这里就存在风险 */
抽象类
从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性,同是抽象类也规定和约束了子类实现哪些方法。相关文章推荐
- Java: 异常处理机制
- 学习笔记_Filter小结(过滤器JavaWeb三大组件之一)
- 学习笔记_过滤器详细_2(过滤器JavaWeb三大组件之一)
- java.lang.UnsupportedClassVersionError
- Java 静态内部类与非静态内部类 学习记录.
- Java学习笔记3、变量、数据类型
- 解决windows下eclipse中android项目关联android library project失败问题
- 关于java集合的总结
- JavaBean,POJO,EJB 是什么?
- Struts2 常见错误 Document is invalid: no grammar found. at (null:3:8)
- spring mvc
- 使用MyEclipse来开发servlet
- 学习笔记_过滤器详细(过滤器JavaWeb三大组件之一)
- spring4学习总结以及spring整合hibernate
- Java tutorial 7
- java获取当天的开始时间,当前周的开始时间
- 学习笔记_过滤器概述(过滤器JavaWeb三大组件之一)
- eclipse android 设置及修改生成apk的签名文件
- 怎么用Eclipse开发STM32
- 浅谈Java分页技术