间歇性混吃等死,持续性踌躇满志系列-------------第3天

1、局部内部类

局部内部类是指在类的方法中定义的内部类,它的作用范围也是在这个方法体内。

 class SellOutClass{
private String name; //私有成员变量
public SellOutClass(){
name = "苹果"; //构造方法
}
public void sell(int price){
class Apple{ //局部内部类
int innerPrice = 0;
public Apple(int price){ //构造方法
innerPrice = price;
}
public void price(){ //方法
System.out.println("现在开始销售"+name);
System.out.println("单价为:"+innerPrice+"元");
}
}
Apple apple = new Apple(price); //实例化Apple类的对象
apple.price(); //调用局部内部类的方法
}
public static void main(String[] args){
//实例化SellOutClass类的对象
SellOutClass sample = new SellOutClass();
//调用SellOutClass类的sell()方法
sample.sell(200);
}
}

运行结果图

2、匿名内部类

由于匿名内部类没有名称,所以你匿名内部类使用默认构造方法来生成匿名内部类的对象,在匿名内部类定义结束后,需要加分号标识,这个分号并不代表定义内部类结束的标识,而代表创建匿名内部类的引用表达式的标识。

语法格式:

return new A(){

  ...//内部类体

}

例:在main()方法中编写匿名内部类去除字符串中的全部空格

 public class OutString{
public static void main(String[] args){
final String sourceStr = "福 建 省 后 天 科 技有限公司";
//编写匿名内部类
IStringDear s = new IStringDear(){
public String filterBlankChar(){
String convertStr = sourceStr;
//替换全部空格
convertStr = convertStr.replaceAll(" ","");
//返回转换后的字符串
return convertStr;
}
};
//输出源字符串
System.out.println("源字符串:"+sourceStr);
//输出转换后的字符串
System.out.println("转换后的字符串:"+s.filterBlankChar());
}
}
interface IStringDear{
//声明过滤字符串中的空格的方法
public String filterBlankChar();
}

运行结果图

3、在静态内部类中定义主方法,并访问内部类中的方法

 public class OutString{
static int x = 1000;
static class Inner{
static void doitInner(){
//调用外部类的成员变量X
System.out.println("外部类的成员变量"+x);
}
//定义主方法
public static void main(String[] args){
//访问内部类的方法
doitInner();
}
}
}

运行结果图

4、标准的switch语句

注:多个case后面的数值不可以重复;

switch后面的小括号只能是下列的数据类型:

基本数据类型(byte/short/char/int)

引用数据类型 (String字符串/enum枚举);

swith语句格式可以很灵活,前后顺序可以颠倒,而且break语句还可以省略。匹配哪一个case就从哪一个位置向下执行。直到遇到break或者整体结束为止。

 public class Demo01{
public static void main(String[] args){
int num = 2;
switch (num){
case 1:
System.out.println("一");
break;
case 2:
System.out.println("二");
break;
case 3:
System.out.println("三");
break;
case 4:
System.out.println("四");
break;
default:
System.out.println("十");
//最后一个break语句可以省略
break;
}
}
}

运行结果图

JAVA进阶3的更多相关文章

  1. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

  2. Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...

  3. Java线程间通信方式剖析——Java进阶(四)

    原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...

  4. Java进阶(三)多线程开发关键技术

    原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...

  5. 当我们说线程安全时,到底在说什么——Java进阶系列(二)

    原创文章,同步发自作者个人博客,转载请以超链接形式在文章开头处注明出处http://www.jasongj.com/java/thread_safe/ 多线程编程中的三个核心概念 原子性 这一点,跟数 ...

  6. Java进阶03 IO基础

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/11/3000905.html 作者:Vamei 出处:http://www.cnblogs.com ...

  7. Java进阶01 String类

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html 作者:Vamei 出处:http://www.cnblogs.com ...

  8. 从ConcurrentHashMap的演进看Java多线程核心技术 Java进阶(六)

    本文分析了HashMap的实现原理,以及resize可能引起死循环和Fast-fail等线程不安全行为.同时结合源码从数据结构,寻址方式,同步方式,计算size等角度分析了JDK 1.7和JDK 1. ...

  9. Java进阶(七)正确理解Thread Local的原理与适用场景

    原创文章,始自发作者个人博客,转载请务必将下面这段话置于文章开头处(保留超链接). 本文转发自技术世界,原文链接 http://www.jasongj.com/java/threadlocal/ Th ...

  10. Java进阶(四十七)Socket通信

    Java进阶(四十七)Socket通信   今天讲解一个 Hello Word 级别的 Java Socket 通信的例子.具体通讯过程如下: 先启动Server端,进入一个死循环以便一直监听某端口是 ...

随机推荐

  1. 斯坦福大学公开课机器学习:machine learning system design | error metrics for skewed classes(偏斜类问题的定义以及针对偏斜类问题的评估度量值:查准率(precision)和召回率(recall))

    上篇文章提到了误差分析以及设定误差度量值的重要性.那就是设定某个实数来评估学习算法并衡量它的表现.有了算法的评估和误差度量值,有一件重要的事情要注意,就是使用一个合适的误差度量值,有时会对学习算法造成 ...

  2. python学习笔记——字典操作

    修改 a={'add':"shanghao","name":"zhangdong"} a['name']='zhangsan' 添加 a={ ...

  3. IIS 错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

    导致这种问题的原因是ASP.NET没有成功注册到IIS中,很有可能是先安装.Net Framework,然后安装IIS.为了避免此问题发生,要先安装IIS再安装.Net Framework. 解决方案 ...

  4. Mac iOS Mac Watch 应用和游戏编程开发工具推荐

    今日分享「iOS / Mac / Watch 应用和游戏开发工具」推荐,这期专题主要为iOS开发者推荐一些优秀的设计和开发工具,这些工具包含移动原型的设计.程序的开发等,可以大大提高开发的效率!专题会 ...

  5. 洛谷P2770 双路DP // 网络流

    https://www.luogu.org/problemnew/show/P2770 第一眼看过去,觉得这不是一个经典的双路DP模型吗,将一条过去一条回来互不相交的路径看作是起点出发了两条路径一起走 ...

  6. 流畅的python--2 序列构成的数组

    我们把文本.列表和表格叫做数据火车...FOR命令通常能作用于数据火车上.      ---ABC Programmer's Handbook 不管是哪种数据结构,字符串.列表.字节序列.数组.XML ...

  7. python对象-多态

    调用不同的子类将会产生不同的行为,而无须明确知道这个子类实际上是什么. 比如,在一个可以播放音频文件的程序中,媒体播放器可能需要加载一个AudioFile对象然后play它,我们把一个play()的方 ...

  8. 2017-12-14python全栈9期第一天第八节之循环语句while

    12,while. while 条件: 循环体 无限循环. 终止循环:1,改变条件,使其不成立. 2,break continue

  9. java io系列11之 FilterOutputStream

    FilterOutputStream 介绍 FilterOutputStream 的作用是用来“封装其它的输出流,并为它们提供额外的功能”.它主要包括BufferedOutputStream, Dat ...

  10. synchronized和volatile的区别

    但是volatile不适合做计数器使用,即使他具有可见性,但是它不具有原子性.不能保证数据的一致性. 但是volatile适合哪种场景呢? 比较适合做一些标示.比如说两个线程,线程B必须得等线程A执行 ...