mysql 启动
http://www.jianshu.com/p/d1957a0e4e03
alias mysql = /usr/local/mysql/bin/mysql
alias mysqladmin = /usr/local/mysql/bin/mysqladmin
mysql admin -u root -p password newpass --newpass 为新密码
mysql -u root -p
Java final 修饰符的作用
在 Java 中,我们有时会使用final对变量进行修饰,被修饰的变量只能够被赋值一次。如果final变量是引用类型,则它将永远持有相同的对象的引用;如果是简单类型,则它会拥有着不变的值。
那么,final变量就是我们所说的常量吗?事实上不是的,因为一个被final修饰的变量,虽然只能被赋值一次,但是如果它为引用类型的变量,那么它所指向的对象则可能改变。
- final 的变量的值不能够被改变
final 的成员变量
final 的局部变量(形参) - final 的方法不能够被重写
- final 的类不能够被挤成
注解 @Override
@Override
public String toString() {
return "xxxxx";
}
上面的代码中,重写了toString()方法并使用了@Override注解。但是,即使不使用@Override注解标记代码,程序也能够正常执行。
那么,该注解表示什么?这么写有什么好处吗?
事实上,@Override告诉编译器这个方法是一个重写方法(描述方法的元数据),如果父类中不存在该方法,编译器便会报错,提示该方法没有重写父类中的方法。
注解 @Repository
用于标注数据访问组建,即 DAO 组件。
注解
基本数据类型
4类8种
- 布尔
boolean - 字符
char (2字节) - 整数类型
byte (1 字节 -128~127)
short (2 字节)
int (4 字节)
long (8 字节) - 浮点数
float(4字节)
double(8字节)
tips:
- Java 中没有无符号类型的值
- Java 语言中的整型常量默认为 int 型,声明 long 型常量可以后加 ‘l’ 或 ‘L’,如:
- 看到一个整数,就会被当成 int 类型。看到一个小数,就会被当成 float 类型。
int i = 600; // 正确
long l = 88888888888L; //必须加 l 否则会出错
例子
class Main {
public static void main(String[] args) {
// boolean b1 = true;
int i = 1, j;
float f1 = 0.1f; // 或者写成 (float)0.1, 这两者是有区别的,0.1f 表示把 double 类型的 0.1 转成 float 存在计算机中,0.1f 本身就是一个
float f2 = 123; //
long l1 = 12345678;
long l2 = 88888888888888l;
double d1 = 2e20;
double d2 = 124;
byte b1 = 1;
byte b2 = 2;
byte b3 = 125;
// j = j + 10;
i = i / 10;
i = (int)(i * 0.1); // i * 0.1 是 double,必须转成 int
char c1 = 'a';
char c2 = 125;
byte b = (byte)(b1 - b2); // 错误 首先转换成 int 进行计算
char c = (char)(c1 + c2 - 1); // 错误 计算时,首先会转换成为 int ,最后转成 char
float f3 = f1 + f2;
float f4 = (float)(f1 + f2 * 0.1); // 0.1 是 double,先转成 double 计算
// double d = d1 * i + j;
float f = (float)(d1 * 5 + d2);// double 转成 float 要用强制转换符
System.out.println("test");
}
}
break 、 continue 、switch
break 语句用语终止某个语句块的执行。用在循环语句体中,可以强行退出循环;
例如:
- break
public class Test {
public static void main(String[] args) {
int stop = 4;
for (int i = 1; i <= 10; i++) {
if (i == stop) {
break;
}
System.out.println(" i= " + i);
}
}
}
- switch
没有写 break,就会造成 case 穿透。
public class TestSwitch {
public static void main(String[] args) {
int i = 13;
switch(i) { // java 这里面只能探测 int 类型e的数据
// char short byte 都可以,他们都可以转化成为 int 类型的数据
case 1:
System.out.println("1");
break;
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
break;
default:
System.out.println("error");
}
}
}
方法的本质是什么?
增强我们代码的复用性。
首先定义类,才能有对象
为什么用对象
对象都有对外服务的接口(通过继承可以复用)
对象隐藏内部服务的实现(通过聚合可以复用)
成员变量与局部变量的区别
在定义成员变量时可以对其进行初始化,如果不对其初始化,Java 使用默认的值对其初始化。
而局部变量如果不初始化,就会出问题。
引用类型与基础类型
基础类型在内存中就占一块区域,除基础类型之外的都是引用类型,在内存区域中占两块内存。
约定俗称的命名规则
- 类名首字母应该大些
- 变量名和方法名的首字母应该小写
- 运用驼峰标识
构造方法的重载
构造函数也可以被重载,可以增加构造过程的灵活性。
遇到复杂表达式时,从里向外分解
链式调用
在栈内存中会连续生成多个临时引用
static 关键字
- 在类中,用 static 声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static 成员变量只有一份。
- 用 static 声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在 static 方法中不可访问非 static 的成员。
-- 静态方法不再是针对于某个对象调用,所以不能访问非静态成员 - 可以通过对象引用或类名(不需要实例化)访问静态成员。
方法的重写
- 在子类中可以根据需要对从基类中继承来的方法进行重写。
- 重写方法必须和被重写方法具有相同方法名称、参数列表和返回类型。
- 重写方法不能使用比被重写方法更严格的访问权限。
继承中的构造方法
- 子类的构造的过程中必须调用其基类的构造方法
- 子类可以在自己的构造方法中使用 super(argument_list) 调用基类的构造方法。
使用this(argument_list)调用本类的另外的构造方法。
如果调用 super,必须写在子类构造方法的第一行。 - 如果子类的构造方法中没有显示地调用基类构造方法,则系统默认调用基类无参数的构造方法。
- 如果子类构造方法中既没有显示调用基类构造方法,而基类中又没有无参的构造方法,则编译出错。
对象转型(casting)
- 一个基类的引用类型变量可以“指向”其子类的对象。
- 一个基类的引用不可以访问其子类对象新增的成员(属性和方法)
- 可以使用引用变量 instanceof 类名来判断该引用类型变量所“指向”的对象是否属于该类或该类的子类。
- 子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称为向下转型(downcasting)
interface
- 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
举例子:
public interface Runner {
public static final int id = 1;
public void start();
public void run();
public void stop();
}
异常
Throwable:
- Error (系统错误,虚拟机出错,不可处理,不用处理
- Exception: 其中包括 RuntimeException (Exception 可以处理,(另一类是必须得逮住的 Exception,比如 IOException)
网友评论