当前位置: 首页 > news >正文

开发网站网页归档网页布局方式

开发网站网页归档,网页布局方式,企业营销策划的最高层次是,网站建设有哪些需要注意的关键细节文章目录 前言Object类2. Objects类3. 包装类4. StringBuilder和StringBuffer5. StringJoiner6. Math7. System8. JDK8开始新增的日期、时间9. Arrays10. Lambda表达式11. 方法引用 前言 其实转语言来说,语法都比较简单,花个三天就会了,但最…

文章目录

  • 前言
  • Object类
  • 2. Objects类
  • 3. 包装类
  • 4. StringBuilder和StringBuffer
  • 5. StringJoiner
  • 6. Math
  • 7. System
  • 8. JDK8开始新增的日期、时间
  • 9. Arrays
  • 10. Lambda表达式
  • 11. 方法引用

前言

其实转语言来说,语法都比较简单,花个三天就会了,但最主要的是熟悉各种API,比如用惯了C++的STL,再来学新的API,就会觉得很不习惯,就拿vector和ArrayList来说,vector就可以直接[]访问,但是Java没有提供操作符重载,就只能用函数来获取了,怪不习惯的。这就好比你之前都是在学一门语言的语法,但是更费时的是去背单词,而往往一门语言学的好不好就是看会的单词多不多。这个比喻不知道恰不恰当,哈哈哈~

接下来Java的学习,就是去熟悉各种常用的API了,我目前能想到的主要有各种数据结构、网络IO、多线程同步互斥、文件等等,把这些都写一遍,才算是初步熟悉Java了吧,然后再去学各种框架。在学习的时候,我也会时常去和C++的一些API做对比的,方便自己和读者们理解。

Object类

Object类是Java中所有类的祖宗类,因此,Java中所有类的对象都可以直接使用Object类中提供的一些方法。
在这里插入图片描述
toStringequals是可以在类中进行重写的,而clone会调用父类Object中的clone方法,并且需要在类中表明Cloneable才行。

package api_object;import java.util.Objects;// Cloneable是一个标记接口
// 规则public class Student implements Cloneable{private String name;private int age;private int[] scores;public Student() {}public Student(String name, int age) {this.name = name;this.age = age;this.scores = new int[2];}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student student = (Student) o;return age == student.age && Objects.equals(name, student.name);}@Overrideprotected Object clone() throws CloneNotSupportedException {// super去调用父类Object中的clone方法Student s2 = (Student) super.clone();s2.scores = s2.scores.clone();return s2;}public int[] getScores() {return scores;}public void setScores(int[] scores) {this.scores = scores;}@Overridepublic int hashCode() {return Objects.hash(name, age);}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

深克隆和浅克隆
我们知道java的数据类型分为引用类型和值类型,因此就有了浅克隆和深克隆一说。

对于浅克隆而言,一方数据改变后,另一方数据也会跟着变化
对于深克隆而言,原型对象和克隆对象之间没有任何关联,指向不同的地址。

  • 浅克隆就是地址用同一块(引用类型拷贝的只是地址)
  • 深克隆
    • 对象中基本类型的数据直接拷贝
    • 对象中的字符串数据拷贝的还是地址(存放在字符串常量池)
    • 对象中还包含的其他对象,不会拷贝地址,会创建新对象

所以为了实现深克隆,就需要对对象进行递归克隆,clone中嵌套clone:首先让源对象调用克隆方法获得克隆的对象,然后获得被克隆对象的引用类型的成员变量对象,对该成员变量对象调用克隆方法,此时成员变量对象也被克隆了一份,最后将该克隆的成员变量对象,设置为克隆对象的新的成员变量,再返回该被克隆的对象,即可实现深克隆。

2. Objects类

该类中都是些static方法,且是final类,用于操作对象或操作前检查某些条件。
在这里插入图片描述
对于equals来说,为什么不用对象自己的equals方法,就是为了防止空指针报错,所以官方更推荐Objects的equals方法。
在这里插入图片描述

3. 包装类

Java万物皆对象,所以对于基本类型来说,也包装成了对应的类。(String已经包装过了)

对于包装类来说,主要是为了模板和各种API的使用。
在这里插入图片描述
拿Integer来说

Integer i = Integer.valueOf(7);
Integer j = 7;  // 自动装箱int p = i;  // 自动拆箱

当然还有一些包装类的常见操作,比如:

  • 把基本类型的数据转换成字符串类型(对应C++的to_string()
    public static String toString(double d)
  • 把字符串类型的数值转换成数值本身对应的数据类型(对应C++的stoi()
    public static int parseInt(String s)
    public static Integer valueOf(String s)(最推荐这个)

当然,还可以这样操作:Integer a = 23; String s = a + ""

4. StringBuilder和StringBuffer

相当于一个容器,这个类在String的基础上,提供了更多的一些方法做修改,效率会更高,代码会更简洁。

StringBuilder就相当于是C++的string了,是一个动态可变字符串,而Java原本的String是不可变的,修改效率非常地下

在这里插入图片描述
而StringBuilder和StringBuffer的用法一模一样,但是StringBuilder是线程不安全的,StringBuffer是线程安全的。

5. StringJoiner

这个类是JDK8才有的,和StringBuilder一样,也是个容器。

好处:不仅能提高字符串的操作效率,并在一些场景下使用它操作字符串,代码会更简洁。
在这里插入图片描述
C++能有这玩意儿?这个是真的牛啊!!!

6. Math

在这里插入图片描述

7. System

System代表程序所在的系统,也是一个工具类
在这里插入图片描述

8. JDK8开始新增的日期、时间

  • JDK8之后的时间API设计更合理,功能丰富,使用方便
  • 都是不可变对象,修改后会返回新的时间对象,不会丢失最开始的时间
  • 线程安全
  • 能精确到毫秒、纳秒

**LocalTime **
在这里插入图片描述

9. Arrays

在这里插入图片描述
或许用得最多的是最后一个数组排序,算法题可能用的比较多吧。

关于这个自定义排序,和C++有点不同。Java官方的约定是:

  • 如果认为左边大于右边,则返回正数
  • 如果认为左边小于右边,则返回负数
  • 如果相等,则返回0

根据这样,得到的是升序,那么在代码的体现最直接了当的就是o1 > o2即可。然而C++确是o1 < o2,注意区分。

10. Lambda表达式

作用:用于简化匿名内部类的代码写法

格式

(被重写方法的形参列表)->{被重写方法的方法体代码。
}

对比下C++的匿名函数

[](形参列表) {代码。
}
  • lambda只能简化函数式接口的匿名内部类(接口、有且仅有一个抽象方法)!!!
  • 我们见到的大部分函数式接口,上面都可能会有一个@FunctionalInterface的注解,有该注解的接口必定是函数式接口

省略写法

  • 参数类型可以不写
  • 如果只有一个参数,参数类型可以省略,同时()也可以省略
  • 如果Lambda中的方法体代码只有一行代码,可以省略大括号,同时要省略分号!如果这行代码是return,也必须去掉return不写
int[] nums = new int[]{123, 321, 153};Arrays.setAll(nums, value -> nums[value]*2);for (int num : nums) {System.out.println(num);}

11. 方法引用

  • 静态方法引用
    类名::静态方法
    如果某个Lambda表达式只是调用一个静态方法,并且前后参数的形式一致,就可以使用静态方法引用。

  • 实例方法引用
    对象名::实例方法
    如果某个Lambda表达式只是调用一个实例方法,并且前后参数的形式一致,就可以使用实例方法引用。

  • 特定类型方法的引用
    类型::方法
    如果某个Lambda表达式里只是调用一个实例方法,并且前面参数列表中的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法的入参的,则此时可以使用特定类型的方法引用。

  • 构造器引用
    类名::new
    如果某个Lambda表达式只是在创建对象,并且前后参数情况一致,就可以使用构造器引用。

http://www.yayakq.cn/news/347728/

相关文章:

  • php网站开发最低配置网络整合营销理论概念
  • php网站开发视频网站简易手机站
  • 网页设计与网站建设实训目的小程序爱成毅的微博
  • 西瓜网络深圳网站建设 东莞网站建设北京各大公司名称
  • 个人主页搭建seo公司的选上海百首网络
  • 论坛网站开发成本百度云网盘资源搜索引擎
  • 政务系统网站建设帮我注册一个账号
  • 廊坊大城网站建设wordpress 4.8.2 漏洞
  • 建设vip视频解析网站违法吗自己如何创立网站
  • 淘宝网站建设与规划好乐买的网站推广方式
  • 为什么python不适合开发网站西樵网站建设公司
  • 淘宝客网站建设平台全国最大的机械设备采购平台
  • 网站在线帮助如何设计江苏中淮建设集团有限公司网站
  • 网站建设开发的主要流程郴州市住房建设局门户网站
  • 美空间网站陇南市建设局官方网站
  • 网站开发专业成功人士高端定制外贸网站
  • 如何构建企业网站h5app开发教程
  • 如何提高网站打开速度网络营销pdf
  • 化工类 网站模板开封 网站建设 网络推广
  • 怎样申请建网站沈阳大型网站设计公司
  • 四川圣泽建设集团有限公司网站文山网站建设公司
  • 免费的黄冈网站代码百度推广 个人网站
  • 温州平台网站建设邢台视频优化效果
  • 网站建设百度索引网站建设知识文章
  • 做暧暧网站免费美工做图片网站
  • 网页数据可视化设计案例南宁优化推广服务
  • 企业建设企业网站的好处有哪些营销型网站的建设与推广辅导记录
  • 网站建设的技能有哪些网络事件营销
  • 英文 edm营销 的网站 与 工具企业常用的网络营销方法
  • 备案中又需要建设网站甘肃省住房和城乡建设厅网站首页