java基本程序设计

先来一段简单的java代码

public class FirstSimple{
    public static void main(String[] args) {
        System.out.println("你是xxxx");
    }
}

注意大小写,这是一个Java程序正确的结构

java /** **/自动生成文档

unicode打破传统字符编码机制

声明变量必须现实初始化

final关键字声明常量,一旦赋值不能继续更改 staic final 声明类常量

强制类型转换会造成精度丢失

String.join() 拼接字符串 字符串常量是最稳的

foreach 循环

        int[] b = new int[100];

        for (int element : b) {
            System.out.println(element);
        }

封装

保护对象实例域,提供黑盒的概念保护数据域的安全,体现了面向对象思想。数据>算法的思想

对象

使用面向对象编程清楚对象三个主要特征

  1. 对象的状态 对象的行为 对象的标识
  2. 面向对象编程不同于面向过程从设计类开始 3.类之间关系有依赖、聚合、继承
  3. 如果返回一个可变对象的引用,应该对它进行克隆
    private Date hireDay;
    public Date getHireDay(){
        return (Date) hireDay.clone();
    }

继承

java 子类数组的引用可以转换为超类父子的引用

  1. 包含一个或多个抽象方法的类必须被声明是抽象的,抽了抽象类和抽象方法,还可以包含具体数据和具体方法
  2. 抽象类不能被实例化
  3. 假如Person是抽象类,可以通过 Person p = new Student();p是抽象类的实力变量,其中student是抽象类的子类
  4. 子类扩展抽象类的一种方法通过实现部分抽象类的的子类其子类也必须是抽象类,另一种方法是全部实现抽象类的方法这样子类就可以不是抽象类

java中只有基本类型不是对象

object利用equals来检测对象的引用是否相等,这种判断并没有意义需要判断对象的状态是否相等。

  1. 需要重写equals方法来判断两个对象是否相等
    public boolean equals(Object otherObject){
        if(this == otherObject){
            return true;
        }
        if(otherObject == null) return false;
        if(getClass()!=otherObject.getClass()) return false;
        Employee other = (Employee) otherObject;
        return name.equals(otherObject.name) && salary ==otherObject.salary && hireDay.equals(otherObject.hireDay);
    }

自己实现equals方法具有以下特性

  1. 自反性
  2. 对称性
  3. 传递性
  4. 一致性
  5. 对于任意

接口

如果遵循某个特定的接口,那么就履行某个特定的服务例如ArrayList可以利用sort进行排序, 但是要求对象不许实现comparable接口

public interface Comparable{
      int compareTo(Object object)
}
// 任何实现Comparable接口的类都包含compareTo方法,并且这个方法的参数必须是一个Object参数

想要employee实现排序那门就必须将类实现给定的接口,对接口的所有方法进行定义。

public int compareTo(Object otherObject){
    Employee  other = (Employee) otherObj;
    return Double.compare(salary,other.salary);
}

如果想做的更好可以为compareTo的参数设置范型
  1. 接口不能被实例化
  2. instance 检查某个对象是否实现了某一个接口,instanceof检查对象是否继承另一个对象。接口中可以定义静态常量但是尽量不要定义,接口可以被扩展
  3. 可以在接口中增加静态方法

变量作用域

  1. lambda 表达式可以访问变量外围的作用域
  2. lambda 表达式就是闭包
  3. lambda 表达式引用变量,并且这个变量可以在外部被改变,这是不合法的
  4. 不能在lambad声明和外部代码块相同的变量名
  5. 使用lambda表达式重要的一个点就是延迟执行

lambda表达式使用情况

  1. 在一个单独的线程中运行代码
  2. 多次运行代码
  3. 在算法的适当的位置运行代码
  4. 发生某种情况时运行代码嘛(点击按钮运行代码)
  5. 只在必要时运行代码
    public static void repeat(int n,Runnable action){
        for(int i = 0;i <n; i++){
            action.run();
        }
    }

内部类主要原因有以下几点

  1. 内部类可以访问类内部的定义域包括私有数据
  2. 内部类可以对同一包中的其他对象隐藏起来
  3. 当定义一个回调韩硕不想写大量的代码,使用匿名内部类比较便捷

使用内部类访问对象状态

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习自然语言处理

Python学习——collections系列

一 ,计数器(counter) Counter是对字典类型的补充,用于追踪值得出现次数 ps:具备字典的所有功能 + 自己的功能 例: >>> from ...

36314
来自专栏专注 Java 基础分享

关于类的对象创建与初始化

今天,我们就来解决一个问题,一个类实例究竟要经过多少个步骤才能被创建出来,也就是下面这行代码的背后,JVM 做了哪些事情? Object obj = new ...

3355
来自专栏老九学堂

最新Java高薪面试题+答案+解析!

今天老九君给大家分享一些Java面试需要的题目哟~ 01 anonymousinnerclass(匿名内部类)是否可以extends(继承)其它类,是否可以im...

4437
来自专栏IT派

Java面试中常被问到的几大技术难题

大家在平常面试java的过程中都会遇到哪些难题呢?还有一些即将去面试java的童鞋们,你们想知道技术面试中会涉及到哪些点吗?达妹为你整理Java面试中会被问到的...

1170
来自专栏企鹅号快讯

每周四更面试题:True+True=?

面试题:True + Ture == ? Python 的 “+” 号会根据操作对象数据类型的不同而进行重载,操作对象为数字类型时,它是算术运算符;操作对象为序...

1917
来自专栏日常学python

爬虫必学知识之正则表达式上篇

这是日常学python的第12篇文章 在向网页进行了提交请求之类的之后,我们可以得到了网页的返回内容,里面自然而然会有我们想要的数据,但是html元素文本这么多...

3356
来自专栏静晴轩

59分钟学会正则表达式

推荐几个正则表达式编辑器 Debuggex PyRegex Regexper 正则表达式是一种查找以及字符串替换操作。正则表达式在文本编辑器中广泛使用,比如正则...

3845
来自专栏互联网杂技

深入理解javascript原型和闭包(1)——一切都是对象

“一切都是对象”这句话的重点在于如何去理解“对象”这个概念。 ——当然,也不是所有的都是对象,值类型就不是对象。 首先咱们还是先看看javascript中一个常...

36516
来自专栏猿人谷

C++重要知识点小结---3

C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.html C++重要知识点小结---2:h...

1726
来自专栏河湾欢儿的专栏

第九节 js里的new方法

要创建 Person 的新实例,必须使用 new 操作符。以这种方式调用构造函数实际上会经历以下 4 个步骤: (1) 创建一个新对象; (2) 将构造函...

1221

扫码关注云+社区