当前位置: 首页 > 编程日记 > 正文

JavaStuNote 4

装箱(inbox)和拆箱(outbox)

代表了类类型和基本类型之间的转换行为。

手动版本号:

Integer b = new Integer(10);

Int a = b.intValue;

自己主动版本号:

Integer b=30;    à  Integer b=new Integer(30);

Int a=b;         à  int a =b.intValue();

由于基本类型和类类型之间的换转操作频繁,SUN公司在高版本号的JDK中提供了自己主动装箱和拆箱操作。由编译器帮助你书写转换代码。

JDK5以上版本号才支持自己主动装箱和拆箱操作。

3. String类了解

String s=new String("abc");

String m=new String("abc");

通过new String()语法将告诉编译器创建新对象,所以这里创建两个字符串对象。

System.out.println(s==m);

String a="xyz";

String b="xyz";

System.out.println(a==b);

为了兼容C开发人员的习惯,SUN也同意不写new String,而字符串赋值。

当”xyz”这个字符串对象在内存中不存在的时候,系统将创建一个字符串对象,当已经存在的时候,系统将复用这个对象。

字符串的不变性(immutable)

不论什么字符串对象一旦被创建。就不能被更改。通过引用变量导致字符串的改动,都将导致新字符串对象的创建。

a=a+"mn";

System.out.println(a==b);

大量的字符串相加操作会产生大量的字符串对象,比方:

String a=”superstar”;

a=a+”m”;

假设有涉及到较多的字符串相加操作。请使用StringBuffer类。

String s=" this is a book! ";

System.out.println(s.length()); //求字符串长度

System.out.println(s.trim().length()); //去除头尾空格

System.out.println(s.toUpperCase());

System.out.println("aBcD".toLowerCase());

System.out.println(s.indexOf('s')); //找出s这个字符在字符串中首次出现的位置

System.out.println(s.lastIndexOf('s'));//找出s这个字符在字符串中最后一次出现的位置

System.out.println(s.indexOf("book")); //找出子串出现的位置

System.out.println(s.indexOf("world!"));

System.out.println(s.toCharArray()[3]);

System.out.println(s.charAt(3));

System.out.println(s.concat("hello,world!")); //字符串相加

System.out.println("abc".compareTo("bca"));  //-1,0,1

System.out.println("abc".compareTo("abc"));  //-1,0,1

System.out.println("cbc".compareTo("bca"));  //-1,0,1

System.out.println("Abc".compareToIgnoreCase("aBc"));

System.out.println(s.contains("book"));

System.out.println(s.endsWith("! "));

System.out.println(s.isEmpty()); //是否为空

System.out.println(s.replace('s''m'));

System.out.println(s.valueOf(1));

System.out.println(1+"");

System.out.println("abcdefg".substring(3));

System.out.println("abcdefg".substring(3,6));

1.重载 (overload)

一个类中,可以存在多个同名的方法。在传统的面向过程的编程语言中。方法名不能雷同。那么一个方法名被使用后,将不能在别的地方被利用,有的时候。一个方法名确实非常好用,可以精确表达某个方法的含义。假设不能被重用。就会导致方法名资源的浪费,造成了编程的复杂性。

方法名同样,參数不同,则构成方法的重载,系统将依据你在方法调用过程中,所传进来的參数的数据类型,选择并运行相应的方法。

參数不同则构成重载,详细规则例如以下:

1. 參数数量不同

2.  相应參数位置的參数数据类型不同

案例:

int add( int a , int b);

int add( int a, int b, int c);

int add( int a, double c);

int add( int a, int d);

[參数名不列入重载考虑范围,构成重名]

void add( int a, int b);

[返回值不列入重载考虑范围。构成重名]

编译器本质上是不同意方法重名的,这在面向对象编程语言中也是这种, 在程序猿的呼吁中,编译器的开发人员提供了可以名字反复使用的机制。但编译器终于将把方法名做修正,比方:

int add( int a , int b);         à  add_int_int

int add( int a, int b, int c);    à  add_int_int_int

继承环境下,子类即能够重写父类方法。也能够重载父类方法(跨类重载)

在本类中,仅仅能重载,假设出现类似重写的效果,即推断为错误。认定为重名。

2. 重写 (override

在继承环境下,子类认可父类的行为 (认同和坚持方法的签名)。但对行为的详细运行过程不认可,则决定对父亲这种方法进行局部或者全然的更新。

重写的模式从内容实现上分为2种:

1) 改良性,补充型重写:对父亲提供的方法内容进行补充。

2) 颠覆性重写:全然否定父亲所提供的方法内容。彻底改写。

重写不是覆盖掉父亲的方法。父亲该方法在子类内部还是存在的。在内存中。体现为子类和父类两个同签名方法共存的现象。

在子类方法中,能够通过super.来显示调用父类被重写的方法,假设不用super. ,则表示调用子类的该重写方法。

继承环境下子类方法设置的可能情况:

Class A{

void sayHello(int a, int b)
}

Class B extends A

Void sayHello(int a, int b){ //在子类中。出现和父类方法同签名,则为重写

........

}

Void tellYouSomething(int a){ //方法名和全部父类方法均不同,称为子类自己定义新方法

}

Void sayHello(int a, int b, int c){ //子类对父类方法的签名做部分改造,叫做跨类重载

}

3. 多态 (polymorphism)

a. 多态三要素

1) 在继承环境下,子类重写父类方法。

2) 通过父类引用变量指向子类对象。

3) 恰好通过父类引用变量调用的是被重写的方法。

在此情况下,将发生多态效应。从常态来说,通过父类引用变量指向子类对象,该引用变量仅仅能看到子类对象中的父类部分,不可能调用到子类方法。

可是因为这里存在重写。通过父类引用变量向子类对象发送信号的时候,该方法调用信号因为和子类重写方法签名是全然一致,结果调用子类的该重写方法,对于方法的主调者来说,其并不知道会产生这个结果。纯属意外。

b. 多态的用途

为今后编写框架代码提供了可能,适合用来编写通用底层代码。

public static void main(String[] args) {

Mouse mouse=new Mouse();

Tiger tiger=new Tiger();

//mouse.sound();

//tiger.sound();

//Animal a=new Tiger();

//a.sound();

letAnimalSound(new Tiger());

letAnimalSound(new Mouse());

letAnimalSound(new Sheep());

}

static void letAnimalSound(Animal a){

a.sound();

}

3. 抽象类 (abstract class

类是模具,有了类,就能够生产对象。

假设一个模具。计划有10个功能,但终于仍然有2个功能没有被实现,这个模具不能用于生产。

同理,类也有类似的现象,有3个方法,实现了2个, 有1个还没实现,但方法签名已经计划好了这个未实现的方法,必须用abstract来修饰,以通知系统本方法未实现。否则无法通过编译,该方法为抽象方法,拥有一个或者多个抽象方法的类,叫做抽象类。

抽象类是未完工的类。其不能用于生产实例!

创建实例       创建子类(继承)     作为引用变量数据类型

普通类         Yes             Yes                  Yes

Final类         Yes             No                  Yes

abstract类       no              Yes                 Yes

抽象类能够被继承,并且渴望被继承 (愚公移山的故事)

子类继承父类,实现了父类的全部抽象方法。该子类能够脱掉抽象的帽子。成为普通类。也称可实例化类;否则。假设不实现父类抽象方法,则不管子类自身方法规模多么庞大,也无法忽视内部有一个抽象方法的事实。子类是不完整的,这个不完整是父类带来的,父类是子类的一部分,所以子类也还是抽象类,不能实例化。

抽象类语法识别注意点:

a. abstract void method3(){ };  //已经实现了。不能再说是抽象,这是矛盾的。

b. void method3( ) { };  // 请注意,空实现也是实现。

以上内容是抽象类的语法解释。以下解说下抽象类的含义:

1) 被动抽象类

由于一个类的体内有抽象方法,该类不得不用抽象来修饰。

2) 主动抽象类

一个类全部方法都实现了,是可实例化类。其有益主动地声明自己是抽象类。

一个类的作者为了不让使用者去创建这个类的实例。其有益申明此类为抽象类。

比方: Animal , Shape, ValueObject…..

该类作者觉得这个类是一个抽象的概念,没有创建实例的意义。该类须要被继承。然后创建子类实例才有意义。

不论什么一个类,不管是否有抽象方法,都能够abstract来修饰。

(例外:

不能用abstract来修饰已经用final修饰的类

Abstract类渴望被继承,而final拒绝继承。两者构成反义关系。不能同一时候存在,否则就构成了矛盾。

5. 訪问修饰符 (access modifier)

现实生活中。一个人有非常多属性, 其不会把全部的属性都告诉不论什么人,而是有选择性对外说明,起到一个自我保护的作用,这也是算是一种“封装 encapsulation”。

依据软件模拟现实的原则,语言设计者推出了訪问修饰符这个机制来实现封装。

a. 从继承角度谈訪问修饰符

本类          同包子类         异包子类

Private                 yes            no             no

<package>              yes            yes             no

Protected               yes            yes             yes

Public                  yes            yes             yes

Protected

能够被继承的意思

<package>修饰符仅仅有本包内部类可见,外部类。即使是子类也看不到。

Protected 修饰符不仅本包内部可见。外包子类也可见。

b. 从引用角度谈訪问修饰符

本类   同包子类   同包非子类  异包子类   异包非子类

Private        yes     no          no         no        no

<package>    yes     yes          yes        no        no

Protected      yes     yes          yes        no        no

Public         yes      yes          yes        yes       yes





相关文章:

把Doc文档转换成HTML等其它格式

利用microsoft Word 9.0 Object Library可以在页面中对Doc文档进行格式转换。有关Word对象的一些方法可以参考Open和Save。下面是进行转换的代码[C#]&#xff1a; /// <summary>/// WordToHtml 的摘要说明。/// 首先要添加引用&#xff1a;Microsoft Word 9.0 Object Li…

如何学好Python?相信很多人都做错了!

Python入门从哪开始&#xff0c;以我的过往经验&#xff0c;发现很多的教程都是这样讲的&#xff1a;先介绍 Python 的基本语法规则、list、dict、tuple 等数据结构&#xff0c;然后再介绍字符串处理和正则表达式&#xff0c;介绍文件等IO操作.... 就这样一点一点往下说。然而这…

艾麦捷科技-铂金小猪新年致辞

2019独角兽企业重金招聘Python工程师标准>>> 光阴似箭&#xff0c;2013年是匆忙的一年&#xff0c;艾麦捷科技从最初的“笑谈”到现在上线&#xff0c;招财猪进销存管理软件从无到有&#xff0c;到现在多次更新&#xff0c;无一不是在匆忙中完成的&#xff0c;尽管很…

C#开源框架整理

Json.NET http://json.codeplex.com/ Json.Net 是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Net环境下使用Json更加简单。通过Linq To JSON可以快速的读写Json&#xff0c;通过JsonSerializer可以序列化你的.Net对象。让你轻松实现.Net中所有类型(对象,基本数据类型 …

提供一个基于.NET的加密/解密算法

提供一个基于.NET SymmetricAlgorithm 类的、带私钥的加密/解密算法的包装类。使用方法&#xff1a; symmcrypto de new SymmCrypto(SymmCrypto.SymmProvEnum.DES);Response.Write(x.Decrypting(de.Encrypting("ok","yyy"),"yyy")); 类的实现…

ubuntu修改IP

一、使用命令设置Ubuntu的ip地址1. 设置IP sudo ifconfig eth0 203.171.239.155 netmask 255.255.255.224 这样就算设置好了网卡eth0的IP地址和子网掩码2. 设置网关 sudo route add default gw 203.171.239.1293. 设置DNS 修改/etc/resolv.conf&#xff0c;在其中加入 nameserv…

Arm 十年重磅发布 v9 架构,不受 EAR 约束,未来将覆盖 3000 亿颗芯片

整理 | 伍杏玲出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;随着 AI、大数据、IoT 技术的相互渗透&#xff0c;人们对数据的要求也越来越高&#xff0c;如何提供普适专用、安全而强大的处理能力的架构&#xff1f;Arm 为这个答案准备十年。近日&#xff0c;Arm 推出…

HDU 6051 - If the starlight never fade | 2017 Multi-University Training Contest 2

/* HDU 6051 - If the starlight never fade [ 原根,欧拉函数 ] | 2017 Multi-University Training Contest 2 题意&#xff1a;给定 m,p, p 是素数设 f(i) 是 满足 (xy)^i ≡ x^i mod p 的 (x,y) 对数 且 1 ≤ x ≤ p-1 , 1 ≤ y ≤ m 求 ∑[1≤i≤p-1] i*f(i)限制&#xff…

干货!用 Python 快速构建神经网络

作者 | ZackSock责编 | 欧阳姝黎头图 | 下载于视觉中国前言机器学习一直是Python的一大热门方向&#xff0c;其中由神经网络算法衍生出来的深度学习在很多方面大放光彩。那神经网络到底是个个什么东西呢&#xff1f;说到神经网络很容易让人们联想到生物学中的神经网络&#xff…

才知道百度也提供了智能DNS服务 - 加速乐

http://jiasule.baidu.com/ 智能DNS 依托百度多年积累的高精度DNS识别库&#xff0c;平均只需5秒全球DNS服务器全部生效&#xff0c;百度蜘蛛1秒生效。抗攻击、无限解析记录&#xff0c;免费支持电信、联通、移动、铁通、教育网、国外、搜索引擎等分线路解析。 极致云加速 百度…

c#中结构与类的区别

类与结构的差别如何选择结构还是类一&#xff0e;类与结构的示例比较&#xff1a;结构示例&#xff1a;public struct Person {string Name;int height;int weightpublic bool overWeight(){//implement something}}类示例&#xff1a;public class TestTime {int hours;int mi…

Samba amp; Nginx - Resource temporarily unavailable

先说说本人的开发环境&#xff1a;Win7 Editplus VMware(CentosSambaNginx)。用Samba在Centos上把web文件夹(如www)共享&#xff0c;然后在Win7上訪问这个文件夹。之所以这么用的原因有&#xff1a; 习惯了Windows。效率比較高Editplus编辑器好用&#xff0c;相对于vi系列来说…

好多Javascript日期选择器呀-7

the Coolest DHTML Calendar 最特別的在於按下月份跟年份的加減按鈕不放&#xff0c;就可以選擇該項目。但實際上按著左鍵拖曳實在是一件很累的事&#xff0c;而且不懂電腦的 End-user 根本就不知道要按著不放&#xff0c;還得特地花時間去說明真的吃力不討好。 正好這次的專案…

话AI、学实践、探未来,亚马逊云科技AI在线大会报名开启!

Innovate 2021亚马逊云科技 AI 在线大会即将在 4 月 22 日举办。届时&#xff0c;亚马逊云科技大中华区产品部总经理顾凡&#xff0c;以及亚马逊云科技全球人工智能技术副总裁、杰出科学家Alex Smola将联袂为您献上精彩的主题演讲。大会开设六大分会场&#xff0c;可谓是别开生…

linux中的一些命令的想法

用户影子文件 ----shadow为什么要有影子文件因为Linux使用不可逆的加密算法来加密口令。加密算法不可逆的&#xff0c;因此***从密文处得不到明文&#xff0c;但/etc/passwd文件是全局可读的&#xff0c;而且加密算法是公开的&#xff0c;一旦用户有机会获取了/etc/passwd文件&…

vstpd服务

1、安装ftpyum install vsftpd -y systemctl start vsftpd systemctl stop firewalld systemctl enable vsftpd setenforce 0 #关闭selinux或者设置selinux不然会对试验造成影响 lftp ip ##能登陆并且显示&#xff0c;表示安装成功2、vsftpd文件信息/var/ftp …

LINQ to XML 建立,读取,增,删,改

LINQ to XML的出现使得我们再也不需要使用XMLDocument这样复杂的一个个的没有层次感的添加和删除。LINQ可以使的生成的XML文档在内存中错落有致。下面以一个小的例子说名LINQ to XML的简单应用。 需要添加必要的引用。System.XML.Linq , System.XML.Xpath使用XDocument 建立一个…

好多Javascript日期选择器呀-6

<script languagejavascript>var DS_x,DS_y; function dateSelector() //构造dateSelector对象&#xff0c;用来实现一个日历形式的日期输入框。{ var myDatenew Date(); this.yearmyDate.getFullYear(); //定义year属性&#xff0c;年份&#xff0c;默认值为当前系…

市值达 58 亿美元,吴恩达的在线教育平台 Coursera 正式上市

整理 | 寇雪芹出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;4 月 1 日&#xff0c;教育科技公司 Coursera 在纽约证券交易所上市&#xff0c;股票代码为 COUR。该股开盘价定为 39 美元 / 股&#xff0c;截至上市当日收盘&#xff0c;股价上涨至 45 美元 / 股&#…

软件包管理RPM

RPM 程序包管理器&#xff0c;可实现对程序包的安装、更新、查询和卸载操作&#xff0c;应用广泛下面通过实际操作来更好的理解RPM的功能安装程序&#xff1a;-i //安装数据包参数-v //显示安装过程-vv //显示更详细的安装信息-h //配合-v更加直观的显示程序安装过程&#…

好多Javascript日期选择器呀-4

<Script LANGUAGE"JavaScript"> var months new Array("一", "二", "三","四", "五", "六", "七", "八", "九","十", "十一", "十二&q…

SUBSTRING函數用法

---引用---從第二位開始,取三位 select SUBSTRING([價格條件],2,3) FROM [Ame_FSC_SEBGCelERP].[dbo].[物料採購價格信息表] SELECT * FROM [Ame_FSC_SEBGCelERP].[dbo].[物料採購價格信息表] update [Ame_FSC_SEBGCelERP].[dbo].[物料採購價格信息表] set [價格條件]SUBSTRI…

英特尔发布智慧社区解决方案,全栈技术支撑,涵盖五大战略方向

疫情的发生加速了城市智能化治理进程&#xff0c;而智慧社区作为其中的重要组成部分&#xff0c;在AI、大数据等技术的助力下&#xff0c;健康防疫追踪、应急管理等需求和应用也因此得到快速发展。 一般来说&#xff0c;打造智慧社区主要有两大目标&#xff0c;一方面&#xf…

OpenGLES 关于 数学 的分支 - 线性变化量、离散量、随机量

关于 数学 的分支 - 线性变化量、离散量、随机量太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es)本文遵循“署名-非商业用途-保持一致”创作公用协议转载请保留此句&#xff1a;太阳火神的漂亮人生 - 本博客专注于 敏捷开发及移动和物联设备研究&#xff1a;iOS、Androi…

好多Javascript日期选择器呀-5

<HTML> <HEAD> <TITLE>最精致的日历式日期输入控件 (Smart Ver 1.00)</TITLE> </HEAD> <style> body {font-size:12px;font-family:"Tahoma"; } td {font-size:12px;font-family:"Tahoma"; } .inputdate {border:1px…

清明出游,你会“鸽”酒店吗?AI 早已看穿一切

来源 | Hyper超神经作者 | 神经小兮头图 | 下载于视觉中国如今&#xff0c;大数据已经被各行各业所应用&#xff0c;酒店行业也不例外。充分利用大数据&#xff0c;使得酒店能够预测市场需求变化&#xff0c;进行智能化决策分析&#xff0c;改善经营状况。各大 OTA&#xff08;…

ti的硬件时钟和系统时钟同步

1.hwclock -w软到硬 hwclock -s硬到软2. 通过ntp网络时钟控制同步3.etc下的localtime文件和GMT-8转载于:https://www.cnblogs.com/pengkunfan/p/3515517.html

来看看BAT在AR领域的布局,你给打几分?

所谓的AR(增强现实)&#xff0c;就是把真实信息和虚拟世界叠加&#xff0c;并使两者具有交互性。换句话说&#xff0c;AR技术不仅让虚拟对象融入到现实世界中&#xff0c;用户还可以对现实世界做出响应。这是一种共生(symbiont)技术&#xff0c;机器与用户的共生。 而当Pokemon…

解决vim没有颜色的办法

首先打开vim&#xff0c;输入命令 scriptnames看看vim加载了哪些脚本。 :scriptnames 输出入下 1: /home/users/xxx/.vimrc2: /home/users/xxx/tools/share/vim/vim73/colors/darkblue.vim3: /home/users/xxx/tools/share/vim/vim73/syntax/syntax.vim4: /home/users/xxx/tools…

好多Javascript日期选择器呀--1

<script languagejavascript>var DS_x,DS_y; function dateSelector() //构造dateSelector对象&#xff0c;用来实现一个日历形式的日期输入框。{ var myDatenew Date(); this.yearmyDate.getFullYear(); //定义year属性&#xff0c;年份&#xff0c;默认值为当前系…