JavaBasic-3-常用类
String
String类代表字符串,Java程序中所有字符串文字(例如“abc”)都被实现为此类的实例,也就是说,Java程序中所有的双引号字符串,都是String类的对象
字符串不可变,他们的值在创建后不能被更改
使用双引号创建字符串对象和使用new创建字符串对象的区别
使用双引号创建字符串对象时,系统检查该字符串是否存在于字符串常量池中,如果不存在则创建,如果存在则复用
使用new来创建字符串对象,每一次new都会申请一个内存空间,虽然字符串内容相同,但是地址值不同
双引号创建的字符串对象在字符串常量池中存储,构造方法创建的字符串对象在堆内存中存储
==
==用于比较基本数据类型时,比较的是内容
==用于比较引用类型时,比较的是地址
比较地址
123String s1 = "abc";String s2 = "abc";System.out.println(s1 == s2); // 比较地址,输出true
123String s1 = "abc";String s2 = new String( ...
JavaBasic-2-Lambada表达式和Stream流
Lambda Expression
概述
Lambda表达式是函数式编程思想的体现,函数式编程思想尽量忽略面向对象的复杂语法,强调“做什么”而不是以什么形式去做
格式
Lambda表达式格式:(形式参数) -> {代码}
如果有多个参数,参数之间用逗号隔开,如果没有参数则留空
->代表指向动作
代码指具体实现的内容
前提
Lambda表达式使用前提
存在接口
接口中有且仅有一个抽象方法
分类
无参无返回值
有参无返回值
无参有返回值
有参数有返回值
Lambda表达式省略模式
参数类型可以省略,如果有多个参数,要么不省略要么全部省略
如果参数有且仅有一个,那么参数的括号可以省略
如果代码块中只有一条语句,那么大括号和语句的分号可以省略,return关键字也可以省略
Lambda表达式和匿名内部类的区别
所需类型不同
匿名内部类:可以是接口,可以是抽象类,还可以是具体的类
Lambda表达式:只能是接口
使用限制不同
如果接口中只有一个抽象方法,则可以使用Lambda表达式也可以使用匿名内部类
接口中有多于一个抽 ...
JavaBasic-1-基础内容
基础语法
基础语法
术语
说明
对象
对象是类的一个实例,有状态和行为
类
类是一个模板,它描述一类对象的行为和状态
方法
方法就是行为,一个类可以有很多方法
实例变量
每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定
注意事项
注意事项
说明
大小写敏感
Java 是大小写敏感的
类名
对于所有的类来说,类名的首字母应该大写。
方法名
所有的方法名都应该以小写字母开头
源文件名
源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java
主方法入口
所有的 Java 程序由 public static void main(String[] args) 方法开始执行。
标识符
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数 ...
算法导学-3-哈希表类型题目
有效的字母异位词LeetCode 242.有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
12输入: s = "anagram", t = "nagaram"输出: true
排序法
t 是 s 的异位词等价于「两个字符串排序后相等」。
因此我们可以对字符串s 和t 分别排序,看排序后的字符串是否相等即可判断。
此外,如果s 和t 的长度不同,t 必然不是s 的异位词。
123456789101112131415// 排序法public boolean isAnagram(String s, String t) { // 长度不相等,之u姐舍弃 if (s.length() != t.length()) { return false; } // 排序比较 char[] chars1 = s.toCharArray(); char[ ...
数据结构-4-二叉树
二叉树的遍历先序遍历递归版本123456789101112131415public void preorder(Node head) { // 递归终止条件 if (head == null) { return; } // 访问树节点 Visit(head); // 遍历左子树 preorder(head.left); // 遍历右子树 preorder(head.right);}
非递归版本123456789101112131415161718192021222324public void preOrder(Node head) { if (head != null) { // 定义辅助栈 Stack<Node> stack = new Stack<>(); // 根节点入栈 stack.add(head); // 先访问根节点,再访问 ...
FSharp-09-DataStructure
Record
example1
12// Labels are separated by semicolons when defined on the same line.type Point = { X: float; Y: float; Z: float; }
12let mypoint = { X = 1.0; Y = 1.0; Z = -1.0; }mypoint
example2
123456// You can define labels on their own line with or without a semicolon.type Customer = { First: string Last: string; SSN: uint32 AccountNumber: uint32; }
example3
1234type Point = { X: float; Y: float; Z: float; }type Point3D = { ...









