基本数据类型包括:四种整数类型(byte、short、int、long)、两种浮点数类型(float、double)、一种字符类型(char)、
一种布尔类型(boolean)。
数值类型包括:四种整数类型(byte、short、int、long)、两种浮点数类型(float、double)。
(1)抽象类:
使用abstract修饰且没有方法体的方法。特点:
① 抽象方法没有方法体,交给子类实现
② 抽象方法修饰符不能是private final static
③ 抽象方法必须定义在抽象类或者接口中
包含抽象方法的类,即使用abstract修饰的类。
特点:
① 抽象类不能被实例化,只能被继承
② 抽象类中可以不包含抽象方法(不包含抽象方法就没有太大意义,可以作为工具类防止被实例化)
③ 抽象类的子类可以不实现该类所有的抽象方法,但也必须作为抽象类(抽象派生类)
④ 抽象类的构造方法不能定义成私有(子类构造方法会调用父类构造方法)
⑤ 抽象类不能使用final修饰,final修饰的类不能被继承。
(2)Java中的接口
在JAVA编程语言中是接口一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
① 接口中没有构造器,不能被实例化
② 接口只能继承接口,不能继承类,接口支持多继承
③ 接口中的定义的成员变量,默认是public static final修饰的静态常量
④ 接口中定义的方法,默认是public abstract修饰的抽象方法
⑤ 接口中定义的内部类,默认是public static修饰的静态内部类
①服务发现——Netflix Eureka
一个RESTful服务,用来定位运行在AWS地区(Region)中的中间层服务。由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。
②客服端负载均衡——Netflix Ribbon
Ribbon,主要提供客户侧的软件负载均衡算法。
③断路器——Netflix Hystrix
断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费 CPU 周期,而它确定该故障是持久的。断路器模式也使应用程序能够检测故障是否已经解决。如果问题似乎已经得到纠正,应用程序可以尝试调用操作。
④ 服务网关——Netflix Zuul
类似nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性。
⑤分布式配置——Spring Cloud Config
这个还是静态的,得配合Spring Cloud Bus实现动态的配置更新。
//测试字符串
String luo="hello";
String bo="he"+new String("llo");
System.out.println(luo==bo);//false
public class StringTest {
public static void main(String[] args) {
//测试输出
String str="word";
changeStr(str);
System.out.println("最终输出的字符串="+str);//word
}
public static void changeStr(String str){
str="hello";
}
}
public class TestExtends {
String name;
public TestExtends() {
}
public TestExtends(String name) {
System.out.println(2);
this.name = name;
}
public static void main(String[] args) {
new Child("输出");
}
}
class Child extends TestExtends{
TestExtends father;
public Child(String name){
System.out.println(3);
this.name=name;
father=new TestExtends(name+":F");
}
public Child(){
System.out.println(4);
}
}
//最终的输出为:3
2
public class Test {
static boolean foo(char c){
System.out.println(c);
return true;
}
public static void main(String[] args) {
int i=0;
for(foo('A');foo('B')&&i<2;foo('C')){
i++;
foo('D');
}
}
}
//最终结果:A
B
D
C
B
D
C
B