Java 学习 第五篇;面向对象

时间:2022-09-27 07:58:33

1:基本数据类型的拆装;
基本变量类型 通过 new WrapperClass(primitive) 创建包装类对象;
包装类的对象 通过 WrapperInstance.XXXValue() 获取包装类对象的值;
例如
int it=5;
Integer itObject=new Integer(it);装包
it = itObject.intValue(); 拆包取出变量值;
<实际上java提供了自动装箱,自动卸箱的功能可以直接赋值>
2:基本类型变量和字符串之间的转换;
String intstr="123" ,intstr2="3.34";
int it =Integer.parseInt(intstr);
Float.parseInt(intstr2);
......

 public static void main(String[] args)
{ String str="232423";
String str1="23.45";
//字符串转换为其他类型
int intstr=Integer.parseInt(str);
float flostr=Float.parseFloat(str1);
System.out.println(intstr);
System.out.println(flostr);
//232423
//23.45
//其他类型转换为字符串
String str2=String.valueOf(intstr);
System.out.println(str2);
//
}

3:equals & ==

String 已经重写了 Object的equals()方法通过equals判断两个字符串是否相等;标准是只要两个字符串包含的字符序列相同即认为相等;
public boolean equals(Object obj);为其原型;

String str ;
String str1;
str="222";
str1="222"; if(str==str1)
System.out.println("true1"); str =new String("222");
str1=new String("222"); if(str==str1)
System.out.println("true2"); if(str .equals(str1) )
System.out.println("true3");

output:

true1
true3
4:再次警示一下为什么static关键字修饰的成员不能访问实例成员
那是因为呀 很久很久以前.......是因为static修饰的是类成员(包括初始化块、方法、内部类和枚举类),类成员作用域大呀,很可能在类成员已经初始化完成
但是实例成员还没有初始化,也就是说实例成员可能还没哟实际存在只是一个引用而已(我的意思是举个栗子实例成员是变量的话)所以那怎么可以随便访问
不能,明显不能.
5:一种特殊的类 -----只能创建一个对象;计划生育的良好贯彻,只准有一个;
如何实现呢:答案很简单---->>>>>隐藏构造器,将构造器用private修饰, 另外得保证时刻得知道有没有创建这个类的对象,所以最好,缓存已经创建的对象,
让后再保证只创建一次就行了,如何保证,看看缓存是否存在呗,有的话就不能继续创建没有的话可以;
举个栗子:

class OnlyOne
{
private static OnlyOne instance;
private OnlyOne(){};
public static Onlyone getInstance()//为什么多了这个呢?为了判断呗 如果有申请创建新的对象,那么根据情况进行判断, 为什么是public?因为总得创建一次
{
if(instance==null)
instance=new OnlyOne;
return instance;
} }

可以测试下 新建两个对象 看看是否==

6:final 用于修饰不可变的类、方法、变量。
可修饰成员变量、局部变量 形参 等等 很类似与const of Cpp;(我是这么认为的)
一旦获取初始化之后就不能被再次赋值;
执行静态初始快块时为类属性赋初值;执行普通初始化快和构造器时可以为实例属性赋初值;
如果定义的final实例属性变量,如果没有及时为之赋初值,即没有在初始化块中、没有在构造器中、没有在初始化时、对其进行赋初值那么定义这个变量有毛用啊,
都TM系统默认了!
记住! 1:final修饰的类属性不能在普通初始化块中赋初值,如果要赋就在静态初始化快中赶紧初始化,因为在加载类的时候系统已经为其初始化完毕;
2:没有初始化不要访问!
3:final 修饰的局部变量 系统不会对其进行“隐式初始化”所以可以
4:final 修饰引用类型,与基本类型有区别,修饰引用类型时只能保证其引用的未知不变“相当于指针的值不变”但是引用的具体内容是可以更改的并且也是合法的;
final 修饰方法:
修饰方法时候,该方法就不能被重写了,注意是不能重写而不是不能重载!
特数情况是 如果父类方法有private修饰时,即便加final 因为该方法对父类是不可见的那么,子类中当然可以再写一个相同的;

7:还有就是所谓的不可变类通过限定其对类的改变、所谓的缓存不可变类;
8:重点是:抽象类 abstract 抽象类和抽象方法 抽象类 顾名思义 从很多类中抽象出来的类没,更具有一般性的类;
-> 抽象类不能被实例化,即不能用new 创建一个抽象类的对象;
-> 抽象方法没有方法体,不能有
-> 抽象类只能被继承;
-> 抽象类可以有构造器,虽然他不能创建实例,但是有构造器主要是用于被其子类调用;
-> 含有抽象方法的类必须定义被抽象类;抽象类可以有普通方法哦
-> 没有抽象变量,抽象属性,抽象构造器的说法!
-> 不能用static和abstract同时修饰一个方法,因为抽象方法没有方法体,通过类调用肯定会出错!
-> abstract修饰的方法一定要被子类重写,所以不能用private修饰;即两者不能同时使用
-> 父类普通方法依赖于一个抽象方法,那么该方法仍然必须推迟到子类中实现;
对抽象类定义下吧:抽象类体现的是模板思想,抽象抽象抽象!!!!!!避免子类设计的随意,子类可以以此为模板进行扩充、改造。
例子:

 package five;

 abstract class Abstract {
{
System.out.println("hello abstract");
}
private String color;
public abstract String xiangtongxingwei1();
public Abstract(){};
public Abstract(String color)
{
System.out.println("using Constructor wiht one parameter");
this.color=color;
}
public String getcolor()
{
return this.color;
} }
class Example extends Abstract
{
public Example(String str)
{
super("str");
System.out.println("using Constructor example wiht one parameter");
}
public String xiangtongxingwei1()
{
System.out.println("xiangtongxingwei1");
return "I am an example";
}
} public class TestAbstract
{
public static void main(String[] args)
{
String str="ssss";
Example exa1=new Example(str);
str=exa1.xiangtongxingwei1();
System.out.println(str);
}
}

output:

hello abstract
using Constructor wiht one parameter
using Constructor example wiht one parameter
xiangtongxingwei1
I am an example

Java 学习 第五篇;面向对象的更多相关文章

  1. 从&period;Net到Java学习第五篇——Spring Boot &amp&semi;&amp&semi;Profile &amp&semi;&amp&semi;Swagger2

    从.Net到Java学习系列目录 刚学java不久,我有个疑问,为何用到的各种java开源jar包许多都是阿里巴巴的开源项目,为何几乎很少见百度和腾讯?不是说好的BAT吗? Spring Boot 的 ...

  2. Java学习第五篇&colon;二进制&lpar;原码 反码 补码&rpar;,位运算,移位运算,约瑟夫问题

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  3. 201671010140&period; 2016-2017-2 《Java程序设计》java学习第五周

    java学习第五周心得体会        本周,是Java学习第五周,随着时间推移,随着课本内容的推进,我们接触到的程序也开始变得越来越复杂,不再是二三章那些用来练手的小程序了,这一点,在我们的例题运 ...

  4. 从&period;Net到Java学习第十一篇——SpringBoot登录实现

    从.Net到Java学习系列目录 通过前面10篇文章的学习,相信我们对SpringBoot已经有了一些了解,那么如何来验证我们的学习成果呢?当然是通过做项目来证明啦!所以从这一篇开始我将会对之前自己做 ...

  5. Java学习之反射篇

    Java学习之反射篇 0x00 前言 今天简单来记录一下,反射与注解的一些东西,反射这个机制对于后面的java反序列化漏洞研究和代码审计也是比较重要. 0x01 反射机制概述 Java反射是Java非 ...

  6. Java学习之jackson篇

    Java学习之jackson篇 0x00 前言 本篇内容比较简单,简单记录. 0x01 Json 概述 概述:JSON(JavaScript Object Notation, JS 对象简谱) 是一种 ...

  7. Java学习之注解篇

    Java学习之注解篇 0x00 前言 续上篇文章,这篇文章就来写一下注解的相关内容. 0x01 注解概述 Java注解(Annotation)又称Java标注,是JDK5.0约会的一种注释机制. 和J ...

  8. java学习(五)

    学号 20189214 <Java程序设计>第五周学习总结 教材学习内容总结 输入输出 文件系统可以包含3种类型的对象:文件.目录和符号链接. 一个文件或路径是一个java.io.File ...

  9. 从&period;Net到Java学习第八篇——SpringBoot实现session共享和国际化

    从.Net到Java学习系列目录 SpringBoot Session共享 修改pom.xml添加依赖 <!--spring session--> <dependency> & ...

随机推荐

  1. js查找水仙花数

    所谓水仙花数是满足类似于153=1³+5³+3³: 第一种方式:把这个数当做字符串来实现 <script> for(var i=100;i<=999;i++) { str_i=i.t ...

  2. 持续集成配置-Teamcity

    1.安装目录\buildagent\work\每个项目下一个文件夹\src下是源 目的: 2. 安装目录\buildagent\work\每个项目下一个文件夹\src下是源 目的是teamcity中配 ...

  3. Java设计模式—生产者消费者模式(阻塞队列实现)

    生产者消费者模式是并发.多线程编程中经典的设计模式,生产者和消费者通过分离的执行工作解耦,简化了开发模式,生产者和消费者可以以不同的速度生产和消费数据.这篇文章我们来看看什么是生产者消费者模式,这个问 ...

  4. HDU5697 刷题计划 dp&plus;最小乘积生成树

    分析:就是不断递归寻找靠近边界的最优解 学习博客(必须先看这个): 1:http://www.cnblogs.com/autsky-jadek/p/3959446.html 2:http://blog ...

  5. 游览器对js加载的次序

    直接看例子 <body> <script> console.log("first"); var script = document.createElemen ...

  6. php 实现同一个账号同时只能一个人登录

    php 实现同一个账号同时只能一个人登录 张映 发表于 2015-01-22 分类目录: php 标签:mysql, nginx, openfire, php, redis 以前考虑过这个问题,今天实 ...

  7. 遭遇mediumint上限

    Mediumint:The signed range is -8388608 to 8388607. The unsigned range is 0 to 16777215. home_notific ...

  8. 李航《统计学习方法》CH03

    CH03 k近邻法 前言 章节目录 k近邻算法 k近邻模型 模型 距离度量 k值选择 分类决策规则 k近邻法的实现: KDTree 构造KDTree 搜索KDTree 导读 kNN是一种基本分类与回归 ...

  9. ftp服务器使用-windowsftp服务起搭建

    首先打开控制面板选择程序 点击启动或关闭windows功能 勾选ftp服务器和IIS管理控制台点击确定 然后右键点击我的电脑,点击管理,然后点击本地用户和组,然后右键点击用户,点击新用户,创建一个用户 ...

  10. EOSIO&sol;appbase

    [EOSIO/appbase] AppBase是EOSIO开源一个plugins架构程序框架,被应用于 EOS nodeos中.AppBase manages the plugin life-cycl ...