【java】基础中的杂乱总结(二)
1 内部类进阶
package package8;
//原则:先用内部类写 之后由于内部类匿名无法引用 用其继承的父类或实现的接口名
//再复写所有的抽象方法即可(是所有,否者还是抽象的,无法创建对象)
interface Inter{
public abstract void method();
}
class Demo{
public void function(){
new Inter(){
public void method(){
System.out.println("定义的匿名内部类中的方法");
}
}.method();
}
}
class Test{
public static void main(String[] args){
Demo d=new Demo();
d.function();
show(new Inter(){
public void method(){
System.out.println("以接口作为参数成功");
}
}); //大括号,括号,分号 注意别漏写
}
public static void show(Inter in){ //多态 自动上转型
in.method();
}
}
运行结果:
以接口作为参数成功
2 java 数组的一些问题
(1) 一维数组
int a[]或int[] a; a=new int[5]; 相当于int a[]=new int[5];
说明:Java对所有使用new运算符动态分配的存储单元都进行初始化工作,变量根据所属的数据类型相应获得初值
short,int,byte,long 0
char ‘\u0000’
float 0.0f
double 0.0
boolean false
引用数据类型 null
(2) 数组是引用类型
(3) 一个数组变量保存一个数组的引用,即该数组占用的一块存储空间的首地址,长度及引用计数等特性,两个数组变量之间是引用赋值,传递的是地址等引用特性,没有申请新的存储空间。
int a[]={1,2,3,4,5},b[];
b=a;(之后对b的操作同时改变a的元素值)
可以使用关系运算(==,!=)判断两个数组是否引用同一个数组
(4) 二维数组
int []mat[]; int [][]mat; int mat[][]=new int[2][3];
mat.length 返回二维数组的长度,即二维数组的行数
mat[0].length 返回一维数组的长度,即二维数组的列数
(5) 不规则的二维数组
由于Java的二维数组采用动态引用的模型,二维数组mat中每一个一维数组mat[0],mat[1]是分散存储的,故可以多次分配。
如:int mat[][]=new[2][];
mat[0]=new int[2];
mat[1]= new int[3];
3 访问控制
类有2种访问控制权限,类中成员有4种访问控制权限
(1) 类的访问控制权限:
公有:所有类访问
缺省:无修饰符,可被当前包中的类访问
注意:一个源程序文件可以声明多个类,但用public的修饰符的类只能有一个,且该类名必须与文件名相同。
(2) 类中成员的访问控制权限
一个类中的所有成员都可以被本类的代码访问,为了控制其他类的访问,类的成员有4种访问控制权限。
当前 类 当前包 (其他包的)子类 所有类
private(私有) yes
缺省 yes yes
protected(保护) yes yes yes
public(公有) yes yes yes yes
注意:缺省为当前包中可见,protected为子类中可见,另外,public等权限修饰符不能用于修饰方法体中的局部变量,因为局部变量的作用域仅限于当前方法,对其他类不可见。
4 格式化Date的方法
@Test
public void fm(){
Date d = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(df.format(d));
}
有了guava的joda time以后似乎已经不推荐这么写了(see DateTime)
5 一个实例来看继承时成员变量与成员方法的访问情况
package inherite;
class Father{
public Father(){
System.out.println("i am father");
}
public int age = 40;
String name ="father";
public void teach(){
System.out.println("teaching");
}
}
class Son extends Father{
public Son(){
System.out.println("i am son");
}
public int age =15;
public void study(){
System.out.println("studying");
}
public void teach(){
System.out.println("teachinghahah");
}
}
public class Test {
public static void main(String[] args) {
Son son = new Son();
System.out.println(son.name);
System.out.println("-----------");
Father f = new Son(); //上转型时成员变量看父类,成员方法看子类
// f.study(); //这句编译失败
f.teach();
System.out.println(f.name);
System.out.println(f.age);
System.out.println("-----------");
Son s = (Son) f;
s.study();
s.teach();
System.out.println(s.age);
}
}
运行结果:
i am father
i am son
father
-----------
i am father
i am son
teachinghahah
father
40
-----------
studying
teachinghahah
15
【java】基础中的杂乱总结(二)的更多相关文章
- java基础之IO流(二)之字符流
java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...
- Java基础中的RMI介绍与使用
今天在这边介绍一下Java基础中的rmi使用.其实rmi有什么样的使用场景呢?它跟webservice有什么区别呢?其实webservice主要是可以跨语言实现项目间的方法调用,而rmi只是java内 ...
- Java基础加强学习笔记(二)
一.反射的基础Class类 1.如何得到各个字节码对应的实例对象 (1)类名.class,例如 System.class (2)对象.getClass(),例如 new Data().getClass ...
- 【干货】用大白话聊聊JavaSE — ArrayList 深入剖析和Java基础知识详解(二)
在上一节中,我们简单阐述了Java的一些基础知识,比如多态,接口的实现等. 然后,演示了ArrayList的几个基本方法. ArrayList是一个集合框架,它的底层其实就是一个数组,这一点,官方文档 ...
- java基础篇---I/O技术(二)
接着上篇http://www.cnblogs.com/oumyye/p/4314412.html java I/O流---内存操作流 ByteArrayInputStream和ByteArrayOut ...
- Java基础面试题集(二)
Java程序员面试题集(1-50) 一.Java基础部分 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象 ...
- Java基础中的一些注意点
1.在Java编程语言中,标识符是赋予变量.类或方法的名称.标识符可从一个字母.下划线(_)或美元符号($)开始,随后也可跟数字.标识符是大小写区别对待的并且未规定最大长度. 2.Java技术源程序采 ...
- Java基础之编程语法(二)
1.常量: 整型:整数,4个字节. 长整型:整数,8个字节.以L结尾. 单精度浮点数:小数,4个字节.以F结尾. 双精度浮点数:小数,8个字节. 布尔:只有两个值,真(true)或假(false),1 ...
- Java基础周测一、二(50题)
一.单选题 (共50题,250分) 1.下列选项不可作为Java语言变量名的是( ). A. a1 B. $1 C. _1 D. 21 正确答案: D 2.有一段Java应用程序,它的类名是a1 ...
随机推荐
- web前端工程师技能总结
编辑器: 1 webstorm(建议版本10.0), 2 sublimeTEXT(建议版本3), 3 dreamweaver (建议版本CS6, CC2015) 浏览器: 1 firefox 建议 ...
- 城市字符串----转数组( 加空格---preg_split) 正则分割字符串 --> 成数组
正则 以 斜杠开始 斜杠 结束 斜杠 包围起来 / / 字母 反斜杠 转义 \s space 匹配空格 多个空格 [ \s ]+ 中括号 包围起来 public function ...
- 网页SEO内容
关于网页根目录下的robots.txt文件的部分疑问 robots.txt书写语法:第一条:User-agent,后接搜索引擎的蜘蛛名称第二条:Disallow,填写要拦截的部分经典语法:User-a ...
- ubuntu安装docker
uname -r #查看内核版本要大于3.10apt-get updateapt-get install linux-image-generic-lts-trusty wget -qO- https: ...
- LNK2019解决思路
虽然官网给出了很多可能的原因,最可能的原因还是因为缺少某个库文件.最近解决的一个为例总结一下思路 Winmm.lib; ad_win32.obj : error LNK2019: unresolved ...
- NOIP2010-普及组复赛模拟试题-第二题-数字积木
题目描述 Description 小明有一款新式积木,每个积木上都有一个数,一天小明突发奇想,要是把所有的积木排成一排,所形成的数目最大是多少呢?你的任务就是读入 n 个数字积木,求出所能形成的最大数 ...
- Swift-HELP
//获取网页地址对应的字符串 var urlString = url.absoluteURL.absoluteString
- Notepad++ V6.9.0 中文绿色便携版
软件名称: Notepad++软件语言: 简体中文授权方式: 免费软件运行环境: Win 32位/64位软件大小: 3.4MB图片预览: 软件简介:Notepad中文版是一款非常有特色的编辑器,是开源 ...
- 2.定义图形类Shape,该类中有获得面积的方法getArea();定义长方形类Rect,该类是Shape的子类,类中有矩形长和宽的变量double a,double b,设置长和宽的方法setWidth()、setHeight(),使用getArea()求矩形面积;利用getArea方法实现题1中圆面积的求解。
// 图形类Shape package d922B; public class Shape { double getArea(ShapePara x){ return x.getArea(); } d ...
- Pivot Index--Google
Return the pivot index of the given array of numbers. The pivot index is the index where the sum of ...