java 面向对象一
- String intStr="123";
- int it1=Integer.parseInt(intStr);
- int it2=new Integer(intStr);
- int it3=111;
- String s=String.valueOf(it3);
- String booleanStr=String.valueOf(true);
- String s=5+"";
- Integer a=new Integer(6);
- System.out.println("6的包装类实例是否大于5.0"+(a>5.0));
- new Integer(2)==new Integer(2); //false
- Integer a=2;
- Integer b=2;
- a==b; //true
- Integer c=128;
- integer d=128;
- c==d; //false
- class Person{
- private String name;
- public Person(String name){
- this.name=name;
- }
- }
- public class PrintObject{
- public static void main(String[] args){
- Person p=new Person("lyy");
- System.out.println(p);
- }
- }
打印出这个对象,结果为Person@15db9742,实际上Person实例是一个内存中的对象,不可以直接转换成字符串输出。但是实际上,这里输出 的是Person对象的toString()方法的返回值,这里的p跟p.toString()效果是一样的。toString()方法是一个“自我描 述”方法,当程序员直接打印该对象时,系统会输出该对象的自我描述信息,用以告诉外界该对象具有的状态信息。toStrng()方法返回的是“类名+@+hashCode”
用==进行判断时,如果都是基本数据类型,且值相等,就返回true;如果是两个引用类型,只有指向同一个对象,==判断才会返回true,如:
- int a=65;
- float b=65.0f;
- a==b; //true
- char c='A';
- a==c; //true
- String str1=new String("hello");
- String str2=new String("hello");
- str1==str2; //false
- str1.equals(str2); //true
- String str3="hello";
- String str4="hello";
- str3==str4; //true
- public class Person{
- private String name;
- private String idStr;
- public Person(String name,String idStr){
- this.name=name;
- this.idStr=idStr;
- }
- public boolean equals(Object obj){
- //如果两个对象是同一个对象
- if(this==obj) return ture;
- //只有当obj是Person对象
- if(obj!=null&obj.getClass()==Person.class){
- Person p=(Person)obj;
- //并且当前对象的idStr与obj对象的idStr相等时才可以判断两个对象相等
- if(this.getIdStr().equals(p.getIdStr())) {
- return true;
- }
- }
- return false;
- }
- }
7.static关键字
- public class Singleton{
- private static Singleton instance=null;
- private Singleton(){}
- public static Singleton getInstance(){
- if(instance==null){
- instance=new Singleton();
- }
- return instance;
- }
- }
饿汉式
- public class Singleton{
- private static Singleton instance=new Singleton();
- private Singleton(){}
- public static Singleton getInstance(){
- return instance;
- }
- }
8.final
final关键字可用于修饰类、变量和方法,final修饰的变量不可被改变,一旦获得了初始值,该final变量的值就不能被重新赋值。
final可提高程序响应效率,声明成final的情况:
(1)不需要重新赋值的变量,包括类属性、局部变量;
(2)对象参数前加final,表示不允许修改引用的指向;
(3)类方法确定不允许被重写;
二 内部类
(1)非静态内部类:
- public class Cow {
- private double weight;
- public Cow(double weight) {
- this.weight = weight;
- }
- public Cow() {
- }
- //非静态内部类
- private class CowLeg{
- private double length;
- private String color;
- public CowLeg(double length, String color) {
- this.length = length;
- this.color = color;
- }
- public CowLeg() {
- }
- public void info(){
- System.out.println("牛腿颜色:"+color+",高:"+length);
- //可以访问到外部类的private修饰的成员变量
- System.out.println("奶牛重:"+weight);
- }
- }
- public void test(){
- CowLeg cl=new CowLeg(1.12,"白加黑");
- cl.info();
- }
- public static void main(String[] args){
- Cow cow=new Cow(378.9);
- cow.test();
- }
- }
注意:如果外部类成员变量、内部类成员变量和内部类方法里的局部变量同名,可以通过使用this,外部类类名.this来区分,如:
- public class DiscernVariable {
- private String prop="外部类的实例变量";
- private class innerClass{
- private String prop="内部类的实例变量";
- public void info(){
- String prop="局部变量";
- //外部类的实例变量
- System.out.println(DiscernVariable.this.prop);
- //内部类的实例变量
- System.out.println(this.prop);
- //局部变量
- System.out.println(prop);
- }
- }
- public void test(){
- innerClass in=new innerClass();
- in.info();
- }
- public static void main(String[] args){
- new DiscernVariable().test();
- }
- }
通过上面两个例子我们可以发现,如果存在一个非静态内部类对象,那么久一定存在一个被它寄生的外部类对象,如:
- public class Outer {
- private int outProp=9;
- class Inner{
- private int inProp=5;
- public void accessOutProp(){
- System.out.println("外部类的outProp的值:"+outProp);
- }
- }
- public void accessInnerProp(){
- //这段代码出现编译错误,外部类不能直接访问非静态内部类的实例变量
- // System.out.println("内部类的inProp的值:"+inProp);
- //必须要显式创建内部类来访问内部类的实例变量
- System.out.println("内部类的inProp的值:"+new Inner().inProp);
- }
- public static void main(String[] args){
- //只是创建了外部类对象,并没有创建内部类对象
- Outer out=new Outer();
- out.accessInnerProp();
- }
- }
(2)静态内部类
- public class StaticInnerClassTest {
- private int prop1=5;
- private static int prop2=3;
- static class StaticInnerClass{
- private static int age;
- public void accessOurProp(){
- //无法访问外部类的实例变量
- // System.out.println(prop1);
- System.out.println(prop2);
- }
- }
- }
3.在外部类以外使用内部类
(1)非静态内部类:
- class Out{
- class In{
- public In(String msg){
- System.out.println(msg);
- }
- }
- }
- public class CreateInnerInstance {
- public static void main(String[] args){
- Out.In in=new Out().new In("测试信息");
- }
- }
- class StaticOut{
- static class In{
- public StaticIn(String msg){
- System.out.println("静态内部类的构造器");
- }
- }
- }
- public class CreateStaticInnerInstance {
- public static void main(String[] args){
- StaticOut.StaticIn in=new StaticOut().StaticIn();
- }
- }
java 面向对象一的更多相关文章
- JAVA面向对象
JAVA面向对象 对象 我们生活中能看到能摸到的一切事物都是对象.在程序中模拟出生活中的所有东西万物皆对象 只要是对象--属性和行为(方法) 属性 对象有什么 例如:学生有姓名.学 ...
- 理解JAVA - 面向对象(object) - 属性,方法
理解JAVA - 面向对象(object) - 属性,方法 多态的体现: 向上造型,父类接收子类对象:向上造型: 从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...
- Java面向对象㈠ -- 封装
Java的面向对象有三大特征:封装.继承.多态.这里主要对封装进行讲解. 封装可以理解为隐藏一个类的成员变量和成员函数,只对外提供需要提供的成员函数. Java的封装主要通过访问权限控制符:priva ...
- 谈谈Java面向对象的三大特性
Java面向对象的三大特性就是指封装.继承.多态了. 一.封装: 概念:封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. (举例:笔记本电脑就是一个封装体,Java语言中最小的封装体就是函数 ...
- Java面向对象:接口
Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- java基础1.0::Java面向对象、面向对象封装、抽象类、接口、static、final
一.前言 一直以来都是拿来主义,向大神学习,从网上找资料,现在就把自己在工作中和学习中的所理解的知识点写出来,好记星不如烂笔头,一来可以作为笔记自己温习,二来也可以给走在求学之路的同学们一点参考意见, ...
- 20145212《Java程序设计》实验报告二 《 Java面向对象程序设计》
20145212 实验二< Java面向对象程序设计> 实验内容 单元测试 三种代码 伪代码 百分制转五分制: 如果成绩小于60,转成"不及格" 如果成绩在60与70之 ...
- 20145213《Java程序设计》实验二Java面向对象程序设计实验报告
20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...
- 20145206《Java程序设计》实验二Java面向对象程序设计实验报告
20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
随机推荐
- Entity Framework——读写分离
1 实现 CustomDbContext扩展了DbContext,其构造函数带有形式参nameOrConnectionString,可以在使用CustomDbContext时指定数据库连接字符串. D ...
- 再谈Spring Boot中的乱码和编码问题
编码算不上一个大问题,即使你什么都不管,也有很大的可能你不会遇到任何问题,因为大部分框架都有默认的编码配置,有很多是UTF-8,那么遇到中文乱码的机会很低,所以很多人也忽视了. Spring系列产品大 ...
- MySQL常用API函数
-- 返回数字的绝对值 SELECT ABS(-10) -- 返回不大于X的最大整数值 SELECT FLOOR(10.9) -- 返回不小于X的最大整数值 SELECT CEILING(10.4) ...
- 使用@AspectJ注解开发Spring AOP
一.实体类: Role public class Role { private int id; private String roleName; private String note; @Overr ...
- 去掉Win7资源管理器左侧不需要的项目
通过修改注册表去掉win7资源管理器左侧你不喜欢的项目: 1,打开注册表WIN+R, 输入:regedit 2,找到HKEY_CLASSES_ROOT \ CLSID \, 再找到对应项, 其包含一个 ...
- java.sql.date和java.util.date的区别和转换
不同点:java.util.Date是在除了SQL语句的情况下面使用的.java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分java.util.Date 是 java.sql. ...
- 确保img的宽高比固定
html: <div class="wrapper"> <swiper :options="swiperOption"> <swi ...
- VM中Centos安装
本例中的vm是12版本的. VM设置 首先是vm的设置,相当于是买电脑的过程 首先文件 -> 新建虚拟机 然后 然后 然后 然后 然后 然后 然后 然后 然后 然后 然后 然后 然后 点击完成之 ...
- mac Axure RP 8 授权码 以及汉化
Koshy wTADPqxn3KChzJxLmUr5jTTitCgsfRkftQQ1yIG9HmK83MYSm7GPxLREGn+Ii6xY 汉化包 汉化包链接 密码: upri 汉化步骤 以Win7 ...
- 转:30分钟学会如何使用Shiro
引自:http://www.cnblogs.com/learnhow/p/5694876.html 本篇内容大多总结自张开涛的<跟我学Shiro>原文地址:http://jinniansh ...