Java小知识
学了好久的java在做后台开发,现在回头看一下Java知识很多都忘了,就想把Java知识点再看一下,主要根据书来学,把不懂的感到重要的记下来,主要方便自己查看,也会去网上找一下网友的解释
JAVA基础知识
Jdk ->>> JDK是Java开发工具包
JRE ->>> 是运行基于Java语言编写的程序所不可缺少的运行环境
一个简单的Java程序
public class FirstSample { //FirstSample要与文件名相同
public static void main(String[] args){
System.out.println("Hello");
}
}
一些类型字节数
int
4字节
short2字节
long8字节
byte1字节
float4字节
double8字节
小知识点
1.编程语言浮点数表示不精确
2.Java的面向对象的三大特性:继承,封装,多态
3.&&与||是按照短路的方式求值的
4.低精度可以自动转换成高精度,高精度转换成低精度要强转
5.一定不能使用"=="运算检测两个字符串是否相等,只能确定两个字符串是否放置在同一位置
6.Java中Switch Case里必须为整数或枚举常量
7.类加上final可以阻止继承,方法加上final也不能被子类覆盖
8.在覆盖一个方法时,子类方法不能低于超类方法的可见性,特别是,如果9.超类方法是public,子类方法一定要声明位public
10.构造器方法修饰符可以不写,也可以写public
11.自动打包规范要求boolean, btye, char <= 127, 介于-128-127之间的short和int被包装在固定的对象里
枚举的表示方式
enum Size {SMALL, MEDIUM, LARGE}
Size s = Size.MEDIUM;
读取输入
Scanner in = new Scanner(System.in);
String name = in .nextline();
一种Break解释方式
int i;
down_loop:
while(true){
for(i=0; i<100; i++){
if(i>10){
break down_loop;
}
}
}
System.out.println(i);//结果为11
增强for循环
int [] a = new int[100];
for(int i : a){
System.out.print(i);//List等集合同样可以使用
}
简单解释一下分装与多态
private int name;
public String getName() {
return name;//放在外部调用的方法对参数进行操作
}
多态:一个对象变量可以引用多种实际类型的现象被称为多态,在Java程序设计语言中,对象变量是多态的,一个Car变量既可以引用一个Car类对象,也可以引用
当时看郝斌的视频中对多态的总结比较好理解:一个父类的引用类型变量它既可以指向父类对象也可以指向子类对象,它可以根据当前时刻指向的不同,自动调用不同对象的方法,这就是多态
构造器
class Month { //如果没有构造器就会有一个默认构造器 new Month() 创建对象就是调用默认的构造方法
}
class Student
String name;
int age;
Student(String name, int age){ //this表示隐式调用,指类的变量,可以通过new Student("Tom",32),现在没有了默认的构造方法
this.name = name;
this.age = age;
}
}
this()也可以调用同一个类的另一个构造器
类的设计技巧
1.一定将数据设计为私有
2.一定要对数据初始化
3.不要再类中使用过多的基本数据类型(用类代替多个基本数据类型)
4.不是所有的域都需要独立的域访问器和域更改器
5.使用标准格式进行类的定义
6.将职责过多的进行分解
7.类名和方法名要能够体现它们的职责
继承
1.extends表明正在构造的新类派生于一个已存在的类
2.已存在的类称为超类,基类或父类,新类被称为子类,派生类或孩子类
3.子类可以使用父类的共有方法
4.super.method()可以调用父类方法
5.super()可以调用父类的构造方法
抽象类
abstract class Person {
public Person(String n){ //抽象类不能被创建
name = n;
}
public abstract String getDescription(); // 有一个抽象方法,就要是抽象类
public String getName(){
return name;
}
private String name;
}
class Student extends Person {
public Student(String n, String m){
super(n);
major = m;
}
public String getDescription(){
return "a student " + major;
}
private String major;
}
修饰符
private —-仅对本类可见
protected —-对本包和所有子类可见
public —-对所有类可见
默认 —-对本包可见
StringBuilder和String的区别
“`
先看代码
string s1 = “first”;
string s2 = “second”;
s1 += s2;
如果我们使用”+”,尽管s1已经指向了另一个对象,但是原来的”first”还是存在,所有使用”+”会造成资源的极大浪费.
StringBuilder的使用方法
StringBuilder sb = new StringBuilder();
sb.Append(“apple “);
sb.Append(“banana “);
sb.Append(“oranger “); //不会造成浪费
我们还可以指定StringBuilder的长度
StringBuilder mystringbuilder = new StringBuilder(“Hello World!”, 25);
当修改StringBuilder时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。可以使用重载的构造函数之一来指定StringBuilder 类的容量。
“`
JAVA String.format 方法
下面是网友的总结,格式有点乱,整理了一下
附上地址
1.对百分数表示
System.out.println(String.format("%1$d%%", 13)); //输出13%
2.String.format("%n");可以获取当前平台独立的行分隔符
3.日记的处理
public static void main(String[] args) {
Date date = new Date();
// 输出两位数字表示的日期,不够位补零
System.out.println(String.format("%td", date));
// 输出两位数字表示的日期,不补零
System.out.println(String.format("%te", date));
// 输出两位数字表示的月份,不够位自动补零
System.out.println(String.format("%tm", date));
// 输出两位数字的年份
System.out.println(String.format("%ty", date));
// 输出四位数字的年份
System.out.println(String.format("%tY", date));
// 输出一年中的第几天(001-366)
System.out.println(String.format("%tj", date));
// 输出指定语言环境的星期简称
System.out.println(String.format("%ta", date));
// 输出指定语言环境的星期全称
System.out.println(String.format("%tA", date));
// 输出指定语言环境的月份简称
System.out.println(String.format("%tb", date));
// 输出指定语言环境的月份全称
System.out.println(String.format("%tB", date));
// 输出指定语言环境的全部日期和时间信息
System.out.println(String.format("%tc", date));
}
4.时间的处理
public static void main(String[] args) {
Date date = new Date();
// 输出默认时间格式
System.out.println(date);
// 输出两位24小时制的小时
System.out.println(String.format("%tH", date));
// 输出两位12小时制的小时
System.out.println(String.format("%tI", date));
// 输出不补零24小时制的小时
System.out.println(String.format("%tk", date));
// 输出不补零12小时制的小时
System.out.println(String.format("%tl", date));
// 输出两位的分钟
System.out.println(String.format("%tM", date));
// 输出两位的秒钟
System.out.println(String.format("%tS", date));
// 输出时区缩写形式的字符串
System.out.println(String.format("%tZ", date));
// 输出特定语言环境的上午或下午标记
System.out.println(String.format("%tp", date));
}
5.时间日期的处理
public static void main(String[] args) {
Date date = new Date();
// 输出24小时制,被格式化为”%tH:%tM:%tS“
System.out.println(String.format("%tR", date));
// 输出24小时制,被格式化为”%tH:%tM“
System.out.println(String.format("%tT", date));
// 输出24小时制,被格式化为”%tH:%tM:%tS:%tp“
System.out.println(String.format("%tr", date));
// 输出日期,被格式化为”%tm/%td/%ty“
System.out.println(String.format("%tD", date));
// 输出日期,ISO 8061格式的完整日期,被格式化”%tY-%tm-%td“
System.out.println(String.format("%tF", date));
// 输出日期和时间,被格式化”%ta%tb%td%tT%Z%tY“
System.out.println(String.format("%tc", date));
}
Java判断对象是否相等
知识比较重要,在网络上找了个很好的资料,比较重要,也有点难理解
写一个知识点:String 散列值是由内容导出的,对象有一个默认的散列值,是对象的储存地址泛型的总结
还没写完
关于反射和其他的知识点我在总结我的项目时再总结