Core Java(六)
面向对象语言特性 (一)
(一) static
作用于 变量,方法,代码块
静态变量:被类的所有对象共享 在类加载时被加载 优先于对象
Student.country = "中国";
静态方法:类名.方法名();
静态方法中只能调用静态成员
代码块:
局部:限制局部变量生命周期
构造:初始化对象的操作
静态:类的初始化操作,在首次类加载时调用
1.加静态不影响权限修饰
2.this,super与static不能同时使用
(二)静态导入
import sattic xxxxx.xxx(导入静态成员)
(三)final
修饰类,变量,方法
内部类
final修饰变量---常量 public static final int a =10;
final修饰全局变量,只能在定义的同时赋值,或者在构造器中赋值
修饰局部变量,可以先定义在赋值
class X{
public final int A;
public X(){
A = 20;
}
public void fun(){
final int b;
b = 20;
}
}
final修饰的类不能被继承
且 成员方法默认final修饰
final修饰的方法不能被重写
(四)权限修饰符
(五)abstract
修饰类和成员方法
父类只知道子类有某种行为但不清楚子类对于该行为的实现细节-->抽象方法
public abstract void eat();
含抽象方法的类需定义为抽象类 abstract class Animal{}
除非子类为抽象类,否则当父类有抽象方法时,子类强制要求重写
抽象类不能被实例化(不能被new),但有构造器,提供给子类对象实例化
抽象方法不能用private,final,static修饰
(六)接口 interface
供别人调用的方法或者函数 解决多重继承问题
implements 可以多实现
可包含变量和方法,但方法必须为抽象方法(默认public abstract),但变量默认public static final,可以与外界直接访问,为静态常量,值不可修改
接口中没有构造方法,不能被实例化
接口与接口之间为继承关系,且接口之间可以实现多继承
(七)内部类
将一个类定义在另一个类或者一个方法里面
成员内部类,局部内部类,匿名内部类,静态内部类
1.成员内部类
---相当于类的成员
可以无条件访问外部类成员属性和成员方法(包括private,静态成员)
外部类调用内部类方法:Inner innner =new Inner();
inner.fun();
主方法中调用内部类方法:Outter outter = new Outter();
Outter.Inner inner = outter.new Inner();
或:Outter.Inner i = new Outter().new Inner();
成员内部类只能定义实例成员,不能定义静态成员
2.局部内部类
--相当于一个方法中的局部变量
不能有public private protected 及static修饰
可以访问外部类的普通成员变量和静态成员变量以及普通成员方法和静态方法,也可以访问该内部类所在方法局部变量(但必须用final修饰(默认加))
不能包含静态成员
3.匿名内部类
继承了类或实现了接口的子类匿名对象
可以写成成员变量的形式,也可以写在方法中,一般写在方法中较多
可以访问外部类的普通成员变量和静态成员变量以及普通成员方法和静态方法,也可以访问该内部类所在方法局部变量(但必须用final修饰)
用于接口回调
4.静态内部类
定义在类内部,static修饰,不依赖外部类,只能使用外部类中静态...
(八)==与equals
==:作用于基本数据类型,比较其储存的值是否相等
作用于引用类型变量 ,比较所指向的对象的地址
equals():不能作用于基本数据类型的变量,只能是一个对象来调用,参数也要传一个对象,
如果未对equals方法重写,则比较的是引用类型变量的变量所指向的对象的地址值
诸如String Date等类对equal方法进行了重写的话,比较的是所指向内容的对象
(九)toString
Object类中方法,把引用里显示在堆区对象的地址值显示出来,常重写方法
(十)getClass
final修饰,不能被子类重写,,可以返回某一引用在运行时指向对象类型 、
获取某一对象的字节码文件
(十一)String类
final修饰,不能被继承
通过char数组保存字符串
字符串 常量,他们的值在创建后不能更改
字符串缓冲区支持可变的字符串
StringBuffer 线程安全的可变字符序列 synchronized
主要操作:append insert
StringBuilder 可变字符序列
(十二)装箱与拆箱
基本数据类型---包装类
int--Integer Integer integer = 10; 自动装箱(-128-127)
int a = integer; 自动拆箱
float
boolean
double
char--Character
Integer integer = 10; 自动装箱 (-128――127)
int a = integer ; 自动拆箱
Core Java(六)的更多相关文章
- applet示例 WelcomeApplet.java <Core Java>
import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Font; import java.awt.Grap ...
- Core Java Volume I — 1.2. The Java "White Paper" Buzzwords
1.2. The Java "White Paper" BuzzwordsThe authors of Java have written an influential White ...
- Core Java Volume I — 4.7. Packages
4.7. PackagesJava allows you to group classes in a collection called a package. Packages are conveni ...
- Core Java Interview Question Answer
This is a new series of sharing core Java interview question and answer on Finance domain and mostly ...
- Core Java 学习笔记——1.术语/环境配置/Eclipse汉化字体快捷键/API文档
今天起开始学习Java,学习用书为Core Java.之前有过C的经验.准备把自己学习这一本书时的各种想法,不易理解的,重要的都记录下来.希望以后回顾起来能温故知新吧.也希望自己能够坚持把自己学习这本 ...
- Core Java读书笔记之String
Java里面的String Conceptually, Java Strings are sequences of Unicode characters. Java里面的String都是Unicode ...
- Top 25 Most Frequently Asked Interview Core Java Interview Questions And Answers
We are sharing 25 java interview questions , these questions are frequently asked by the recruiters. ...
- Difference Between Arraylist And Vector : Core Java Interview Collection Question
Difference between Vector and Arraylist is the most common Core Java Interview question you will co ...
- Core Java (十一) Java 继承,类,超类和子类
Core Java (十一) Java 继承,类,超类和子类 标签: javaJavaJAVA 2013-01-22 17:08 1274人阅读 评论(0) 收藏 举报 分类: java(58) 读 ...
随机推荐
- Winform开发 如何为dataGridView 添加CheckBox列,并获取选中行
//添加CheckBox列 DataGridViewCheckBoxColumn columncb = new DataGridViewCheckBoxColumn(); columncb.Heade ...
- mysql 各项操作流程
启动mysql:进入命令行输入:net start mysql 如果失败则显示:服务名无效,需跳转到指定Bin目录下进行启动mysql, 成功则进行下一步:登陆 :mysql -uroot -proo ...
- Python基础:条件判断 &&循环
1:条件判断 2:循环 2.1:for 2.2 while 小结: continue :跳出本次循环 进行下次循环, break :结束循环体.
- 微信二次认证 C#
using Senparc.Weixin.Entities; using Senparc.Weixin.HttpUtility; using Senparc.Weixin.QY.AdvancedAPI ...
- day34-1 面向对象概述
目录 面向对象编程 面向过程&面向对象 Python中一切皆对象 什么是对象? 面向对象编程 面向过程&面向对象 都是一种解决问题的思想 面向过程:在解决问题的时候,关注的是解决问题的 ...
- 64 求1+2+3+...+n(发散思维能力 )
题目描述: 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 解题思路: 1)利用&&的短 ...
- 判断n是否为质数
#include <iostream> #include <vector> #include <stdio.h> using namespace std; int ...
- prim求最小生成树
一直以来只会Kruskal prim和dijkstra很像 只不过prim维护的是最短的边,而dijkstra维护的是最短的从起点到一个点的路径 同时prim要注意当前拓展的边是没有拓展过的 可以用堆 ...
- 【ACM-ICPC 2018 沈阳赛区网络预赛 I】Lattice's basics in digital electronics
[链接] 我是链接,点我呀:) [题意] [题解] 每个单词的前缀都不同. 不能更明示了... 裸的字典树. 模拟一下.输出一下就ojbk了. [代码] #include <bits/stdc+ ...
- HTML乱码问题
第一:定义网页显示编码.如果不定义网页编码,那么我们浏览网页的时候,IE会自动识别网页编码,这就有可能会导致中文显示乱码了.所以我们做网页的时候,都会用“<meta http-equiv=”Co ...