Java2精要_java知识精要(一)

一、java数组 (疯狂java讲义 第4.5 ~ 4.6章节)

1) 声明形式:

type[] arrayName; 推荐方式

type arrayName[];

2) 初始化:

方式一:

type[] arrayName;

arrayName = new type[] {element1, element2, element3, ...}

方式二:

type[] arrayName = {element1, element2, element3, ...}

方式三:报错

type[] arrayName;

arrayName = {element1, element2, element3, ...}

方式四:

type[] arrayName = new type[length];

说明:

方式四中,系统为数组元素分配初始值,如byte,int long - > 0, float,double -> 0.0, boolean -> false, 引用类型 -> null。

**特别注意,方式四创建的数组,如果是引用类型,初始值为null,[参考这道题](https://leetcode.com/submissions/detail/282378308/)**

不要在进行数组初始化时,即指定数组长度,又为每个元素分配初始值。

数组长度是数组的属性,arrayName.length,即可访问。

foreach循环方法:

for ( type var : array | collection ) {

...

}

注:这种方法中var只是原集合中的一个副本,对var进行修改,不会改变原集合的内容。

3) 多维数组

type[][] arrName = new type[length][]; // 可以仅指定高维

type[][] arrName = new type[length1][length2];

String[][] str1 = new String[][] {new String[3], new String[] {"hello"}} // 可见低维长度可以不等

4) 操作数组工具类Arrays

binarySearch, copyOf, sort, toString等 (补充用例)

可以用[Contains Duplicate](https://leetcode-cn.com/problems/contains-duplicate/)来练习各种排序算法

二、String, char

java中,char占16位

1. String -> char

String.charAt(idx) 返回char

String.toCharArray() 返回char[]

2. char - > String

String s = String.valueOf('c')

String s = String.valueOf(new char[]{'c'})

String s = new String(new char[]{'c'})

String s = new String(char[] s, int offset, int len);

三、面向对象上 (疯狂java讲义 第5章)

1. java参数传递仅有值传递一种方式

2. 形参长度可变的方法:

void test(int a, String... books){

for(String t : books){...}

}

test(5, "book1", "book2")

变长形参被作为数组参数

3. override v.s. overload

override: 子类重写父类方法,签名一致

overload: 同一个类中,同名不同参的方法(返回值不能作为区分)

https://www.runoob.com/java/java-override-overload.html

4. 成员(属性、方法)访问权限

default:同一个包中任意类访问

protected: 同一个包中任意类访问 或 其他包中子类访问

java文件名和class名可以不一样,当class是非public的时候

5. 成员初始化顺序

因素:静态成员/初始化块、普通成员/初始化块、构造函数、父类子类、分配对象(容易被忽略)

https://www.zhihu.com/question/49196023

http://jm.taobao.org/2010/07/21/331/

需注意的是:为对象分配内存,而后会初始化为默认值(int->0, boolean->false, ref -> null...)

初始化块、构造函数都是在一个内部的 函数中,可以在代码中构造异常来查看,另外,调用其他构造器时,必须放在构造函数中的第一行

static code block ->

方法重载overwrite为啥不用返回值作为特征呢?如果你调用的时候忽略返回值,那怎么区分

6. 调用父类构造器

super显示调用父类构造器时,必须放在子类构造器的第一行this也有这个要求

如果子类构造器中调用this(...),即其他构造器,则会在其他构造器中调用父类构造器。

如果子类中无super 和 this,则会隐式调用无参构造器。如果此时父类没有无参构造器时,会报错。

7. static

不能在static方法中调用非static方法,反之可以:static方法在第一次使用的时候已经加载,此时非static方法可能未加载起来

8. 初始化

void func() {

int c;

c ++; // 报错

String s;

System.out.println(ss); //报错

}

9. leetcode [combination sum](https://leetcode.com/problems/combination-sum/description/)

class Solution {

void helper(int[] candi, List> r, List list, int tgt, int sum, int idx){

if( sum == tgt ){

// r.add(list); 将当前对象加入,会有问题

r.add(new ArrayList(list));

return;

}

if( sum > tgt ) return;

for(int i = idx; i < candi.length; i ++){

if(candi[i] > tgt) return;

list.add(candi[i]);

helper(candi, r, list, tgt, sum + candi[i], i);

list.remove(list.size()-1);

}

}

public List> combinationSum(int[] candidates, int target) {

List> r = new ArrayList>();

if( candidates.length == 0 ) return r;

Arrays.sort(candidates);

helper(candidates, r, new ArrayList(), target, 0, 0);

return r;

}

}

四、面向对象下 (疯狂java讲义 第6章)

1. 基本数据类型包装类

自动装箱拆箱前:

装箱: new WrapperClass(primitive)

拆箱: WrapperInstance.xxxValue()

基本数据类型 -> 字符串:String.valueOf()

字符串 -> 基本数据类型:Integer.parseInt()

2. 类的组成

类包括属性、方法、初始化代码块、构造器、内部类、枚举类等。

静态成员不能访问实例成员。

单例对象多种方法

3. final

final修饰变量

无论是类成员属性,还是局部变量,都不能重新赋值。

如果是引用类型,仅能确保引用指向同一对象,对象的内容依然可变。

final修饰方法

不能被override

final修饰类

不可有子类

4. abstract

一个类有抽象方法(a. 直接定义了抽象方法; b. 继承了抽象父类的抽象方法未实现;c. 接口的抽象方法未实现?),则必须被标识为抽象类。

不包含抽象方法的类,也可以标识成抽象方法。

抽象类的作用?模板模式意义大于实际意义。

5. interface

接口修饰符可以是public或default

接口里可包含常量、抽象实例方法、内部类/接口、枚举类 (新版本可以有普通函数了),他们都是public访问权限,即使省略

接口里的属性默认采用public static final,接口里的方法默认采用public abstract,接口里的内部类和枚举类默认采用public static。

6. 内部类

是封装的强化,仅在外部类中使用,不会在其他地方使用,那么放到外部类里面。

成员内部类、局部内部类、

[匿名内部类](https://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html)

7. 枚举类 略

(完结)

8. gc

引用计数的方式存在循环引用的问题,为此采用检测存活对象的方式,从栈或静态存储区开始检查,能被访问到的对象就是存活的,否则,可以被清除掉。

五、位操作

java中没有无符号数,不过提供了>>>无符号右移操作符,注意无符号右移是把数字当作无符号数来移位的

位操作参考

移位操作练习

如下代码,key值是啥?

class BitExample{

public static void main(String[] args){

int x = 1;

int y = 1;

long key = x << 32 | y;

System.out.println("key:" + key);

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java的反射机制是什么_JAVA反射机制

一、什么是反射机制 简单的来说&#xff0c;反射机制指的是程序在运行时能够获取自身的信息。在java中&#xff0c;只要给定类的名字&#xff0c;那么就可以通过反射机制来获得类的所有信息。二、哪里用到反射机制 有些时候&#xff0c;我们用过一些知识&#xf…

java dot画图_小O的图案 (Java代码)(最简单的解法)

解题思路:注意事项:参考代码:import java.util.Scanner;public class C1788 {public static void main(String[] args) {Scanner sc new Scanner(System.in);while (sc.hasNext()) {F(sc.nextInt());}sc.close();}private static void F(int n){System.out.println(n);int len…

java inireader_java读取配置文件 Java中如何设置读取ini配置文件?

Java读取配置文件的几种方法以及路径问题看透&#xff0c;心静&#xff0c;锁份幽静&#xff0c;将自己填埋在那里&#xff0c;任窗外灯红酒绿&#xff0c;草长莺飞&#xff0c;让那颗疲惫的心&#xff0c;静静地栖息在流水盈盈里&#xff0c;抛却尘世累累。java 怎么读取web j…

java unsafe park_Java魔法类——Unsafe应用解析

前言Unsafe是位于sun.misc包下的一个类&#xff0c;主要提供一些用于执行低级别、不安全操作的方法&#xff0c;如直接访问系统内存资源、自主管理内存资源等&#xff0c;这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java…

mysql中group by的排序问题_Mysql之group by 和order by 一起用时的排序问题

业务需求&#xff0c;需要查询表里不同分类下的order最大的记录。查看表中的记录&#xff1a;SELECT id,tid,order, FROM_UNIXTIME(yestime) FROM tfenWHERE tid IN(7512, 7514)ORDER BY order DESC ;结果如下&#xff1a;排序的sql语句&#xff1a;SELECT id,tid,order, FROM_…

java actionscript_ActionScript(对比Java)学习笔记二

27.ActionScript中的组件对象: 类似于Java中的Swing组件对象&#xff0c;ActionScript提供了很多组件!!(可以自行查看官网提供的组件列表学习&#xff0c;也可擦看已经拥有的flex3componentexplorer.pdf文档)!!(一) 容器类组件对象:这里列举了几种常见的容器组件&#xff01;&a…

计算机视觉基础(12)——图像恢复

前言 我们将学习图像恢复相关知识。主要有图像恢复的定义、评价标准和实现图像恢复的方法。图像恢复任务包括图像去噪、去模糊、图像超分辨率、图像修复等&#xff1b;评价标准有峰值信噪比和结构相似性&#xff1b;图像超分辨的方法有传统方法和基于深度学习的方法&#xff1a…

java 项目启动初始化_Spring Boot解决项目启动时初始化资源的方法

前言在我们实际工作中&#xff0c;总会遇到这样需求&#xff0c;在项目启动的时候需要做一些初始化的操作&#xff0c;比如初始化线程池&#xff0c;提前加载好加密证书等。今天就给大家介绍一个 Spring Boot 神器&#xff0c;专门帮助大家解决项目启动初始化资源操作。这个神器…

java中的equals拿什么鞋的_java.中equals的使用

下面在Cat类里面重写这个继承下来的equals()方法&#xff1a;class Cat {int color, weight, height;public Cat(int color, int weight, int height) {this.color color;this.weight weight;this.height height;}/*** 这里是重写相等从Object类继承下来的equals()方法&…

java 弹出软键盘_Android开发之弹出软键盘工具类简单示例

本文实例讲述了Android开发之弹出软键盘工具类。分享给大家供大家参考&#xff0c;具体如下&#xff1a;package com.maobang.imsdk.util;import android.content.Context;import android.view.inputmethod.InputMethodManager;import android.widget.EditText;import java.uti…

百度编辑器图片上传 java_百度编辑器粘贴图片自动上传到服务器(Java版)

ChromeIE默认支持粘贴剪切板中的图片&#xff0c;但是我要发布的文章存在word里面&#xff0c;图片多达数十张&#xff0c;我总不能一张一张复制吧&#xff1f;Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能。但是无法处理多张图片。而且转换成BASE64后是作为内容…

matlab解方java_Java:调用window的matlab遇到的问题和解决方案

描述容易报错的问题和可能原因1.java.lang.NullPointerException解决途径&#xff1a;window和linux的文件路径不同&#xff0c;window分隔符是\\&#xff0c;linux是/2.Exception in thread “main” java.lang.ExceptionInInitializerError解决途径&#xff1a;matlab生成的j…

java里面add报错_java.util.Arrays$ArrayList addAll报错

执行下面代码时报错:List centerList WebConstants.SUPPORT_BIG_CENTERS_LIST; // WebConstants.SUPPORT_BIG_CENTERS_LIST是Arrays.asList转化来的centerList.removeAll(WebConstants.SUPPORT_CENTERS_LIST);centerList.addAll(WebConstants.SUPPORT_CENTERS_LIST);最后一行报…

java中的输入语句判断正负_在java中使用方法调用统计数组中正数的个数,将判断数据的正负功能定义成方法...

满意答案donglin820推荐于 2018.04.21public class TestDemo {static int count 0;// 统计整数的个数public static void main(String[] args) {int[] number new int[10];// 动态生成一个整数数组(长度为10)Scanner s new Scanner(System.in);for (int i 0; i < 10; i)…

java 压缩加密 github_关于Java:使用github中的AES-256-CBC加密

本问题已经有最佳答案&#xff0c;请猛点这里访问。我想使用这些课程https://github.com/fukata/AES-256-CBC-示例在我的项目中&#xff0c;但是即使我不进行任何更改而对其进行编译&#xff0c;也会导致错误&#xff1a;Exception in thread"main" java.lang.Runtim…

java二级考试有草稿纸吗_“大型考试”为什么需要回收草稿纸?学生:这么多年也没整明白!...

在大家的求学生涯中&#xff0c;肯定不难发现这个事情&#xff0c;那就是学生考完试不能带走草稿纸&#xff0c;尤其是高考、中考这种全国统一大型考试&#xff0c;英语四六级等等&#xff0c;而一些初中高中、大学院校内部期末考试也是这样。学校和考场提供统一草稿纸目的是非…

expressjs如何做mysql注入_Node.js+Express+Mysql 实现增删改查

这次选用nodejsexpressmysql 使用http作为客户端&#xff0c;express框架搭建服务端&#xff0c;从而实现数据的增删改查。这篇文章可以算作上篇文章的升级篇&#xff0c;加入了和数据库的交互。安装node 直接去官网下载选择下载即可https://nodejs.org/en/download/current/cn…

docker pxc mysql_docker安装pxc集群的详细教程

前言现在mysql自建集群方案有多种&#xff0c;keepalived、MHA、PXC、MYSQL主备等&#xff0c;但是目前根据自身情况和条件&#xff0c;选择使用pxc的放来进行搭建&#xff0c;最大的好处就是&#xff0c;多主多备&#xff0c;即主从一体&#xff0c;没有同步延时问题&#xff…

java双击添加文本框_java图形界面 怎么文本框要用鼠标点一下才出来

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;public class BuildMaze extends JFrame implements ActionListener{private JButton random,Return,display,choice;private ImageIcon icon…

php图形验证码验证,php生成图形验证码几种方法小结

我们先来检查一下自己的php是不是打开了gd库。复制代码 代码如下:if(extension_loaded(gd)) {echo 你可以使用gd;foreach(gd_info() as $cate>$value)echo "$cate: $value";}elseecho 你没有安装gd扩展;?>如果有返回信息就正确可以常用使用了例1复制代码 代码…