java记录
常见命名约定
自增自减
参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者–参与操作的时候,如果放在变量的前边,先拿变量做++或者–,后拿变量参与操作。
int i =1;
int j;
j=i++;
//j=i;
//i=i+1;
j=++i;
//i=i+1;
//j=i;
在这里插入代码片
标题
类和对象
类:
class Example{
int x;//属性
String s;//属性
//生命方法
int add3(int a){
return a+3
}
// example类的构造方法
Example(){
x=10
s=null
}
}
对象:
Example a =new Example();
在这里插入代码片
输入输出
输出:
public class Hello{
public static void main(String[] args){
System.out.println("Hello Word")
}
}
输入:
import java.util.Scanner
public class Input{
public stastic void main(String[] args){
Scanner scanner= new Scanner(System.in);
int a=scanner.nextInt();
System.out.println(a);
}
}
创建变量
数组:
int[] a=new int[10];
流程控制
分支:
int x =3;
switch(x){
case 1 -> System.out.println("is 1");
case 2 -> System.put.println("is 2");
case 2 -> System.put.println("is 3");
}
面向对象
封装:
class Circle{
private double r;
private double pi=3.14;
void setR(double x){
this.r=x;
}
double getR(){
return this.r;
}
double ComputerArea(){
return pi*r*r;
}
)
继承:
public class test{
public static void main(String[] args){
Student zhangsan = new Student();
}
}
class Person {
String name;
int age;
}
class Student extend Person{
int grade;
}
子类构造:
class father{
int fx;
String fname;
father(){
fx=1;
fname=null;
}//无参数构造方法
father(int x,String s){
fx=x;
fname=s;
}//有参数构造方法
void speakOI(){
System.out.println("oi!");
}
}
class son extends father{
double sy;
son(int x,Sting s,double y){
super(x,s);
sy=y;
}
void valueTOX(int x){
super.fx=x;//d调用父类属性
}
void speak(){
super.speakOI();//调用父类方法
}
}
继承多例子:
水仙花
public class test{
public static void main(String[] args){
for(i=100;i<1000;i++){
int a=i%10;
int b=i/10%10;
int c=i/100%10;
if(a*a*a+b*b*b+c*c*c==i){
System.out.println(i);
}
}
}
}
集合
ArrayList底层是数组,查询快(get,contain)增删(add,remove)慢,LinkedList底层是链表,查询慢,增删快。
ArryList:
List list = new ArrayList();
List是接口,ArrayList是它的实现类
面向接口编程
提高程序宽展性,以后修改维护好些
声明一个接口的变量(接口的引用)可以指向一个实现类(实现该接口的类)的实例, 但是该接口的变量不能使用实现类中有,接口中没有的方法(实现类中没有重写的方法,自添加的方法)。
Hashset
不包含重复元素,无序
允许有null值,不是线程安全的。
无重原理:通过hashCode值来判断重复元素的。
int hashCode():返回哈希值。同一对象哈希值相同,不同对象的哈希值默认不同,方法重写后可以相同。
哈希表是元素为链表的数组,默认容量16,负载因子0.75,处理冲突方法是链地址法。
泛型?
Hash Map<K,V>
HashMap键是对象,并且要求对象内成员变量值相等视为同一对象,则重写hashCode().
Set(无序不可重复)
i/o流(没怎看)
路径斜杠可以是//,/,\,不能是\,因为它是转义符。
多线程
java是抢占式调度模型
优先级:每一个 Java 线程都有一个优先级,优先级是一个整数,其取值范围是 1 (Thread.MIN_PRIORITY ) - 10 (Thread.MAX_PRIORITY )。
默认情况下,每一个线程都会分配一个优先级 NORM_PRIORITY(5)。
优先级高的线程只是获取CPU时间片的几率高,并不能保证先执行。
创建线程方法:
通过实现 Runnable 接口;
优点:
(1)避免由于 Java 单继承带来的局限性
(2)逻辑和数据更好分离。通过实现 Runnable 接口的方法创建多线程更加适合同一个资源被多段业务逻辑并行处理的场景。在同一个资源被多个线程逻辑异步、并行处理的场景中,通过实现 Runnable 接口的方式设计多个 target 执行目标类可以更加方便、清晰地将执行逻辑和数据存储分离,更好地体现了面向对象的设计思想
通过继承 Thread 类本身;
通过 Callable 和 Future 创建线程。
线程同步(?不是很懂)
网络编程()
Lambda表达式
Lambda表达式是一个对象,必须有上下文环境,作用是实现单方法的接口。