BigData学习之路
第一步 JAVASE(基础语法)
Java基础语法是大数据开发基础中的基础。
基础语法
一、标识符与关键字
1.1 标识符
- 含义
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
public class IdentifierTest//Identifier是一个类名,可以修改
{
//main是一个方法名
public static void main(String[] args){//args是一个变量名
}
//dosome就是方法名
public static void dosome(){
//i就是变量名
int i = 10;
}
}
- 标识符命名规则—掌握
- 标识符只能由数字、字母、下划线"_"、美元符号"$"组成,不能含其他符号。
- 标识符不能以数字开头。
- 保留字和关键字不能作标识符。
- 标识符严格区分大小写。
- 理论上没有长度限制。
- 标识符命名规范—掌握
- 类名、接口名:首字母大写,后面每个单词首字母大写。例如Student学生类、Runable可运行的(接口名)。
- 变量名、方法名:首字母小写,后面每个首字母大写。例如age年龄、eatTea喝茶
- 常量名:全部大写。例如LOGIN_SUCCESS
1.2 关键字
- 含义:
JAVA中事先定义好的,有特殊意义的单词
this 和 super 的比较(掌握)
-
this是一个关键字,是一个引用,保存内存地址指向自身。
super是一个关键字,不是引用,也不指向任何对象,只代表对象内部那一块的父类的特征。(不能直接单独用super) -
this可以使用在实例方法中,也可以使用在构造方法中。
super能出现在实例方法和构造方法中。 -
this出现在实例方法中其实代表的是当前对象。
super出现在实例方法中代表当前对象父类的那一块特征。 -
this不能使用在静态方法中。
super不能使用在静态方法中。 -
this. 大部分情况下可以省略,但是用来区分局部变量和实例变量的时候不能省略。
super. 大部分情况下是可以省略的。但是父类和子类中有同名属性,或者说有同样的方法;想在子类中访问父类的,super. 不能省略。 -
this() ,super()这种语法只能出现在构造方法第一行,表示当前构造方法调用本类其他的
-
this和super都是构造方法,目的是代码复用。
二、变量
2.1 字面量
含义:字面量就是数据/数值,
类型数据被分为:整数型、浮点型、字符型、布尔型、字符串型等;字面量因此分为整数型字面量、浮点型字面量、字符型字面量、布尔型字面量、字符串型字面量等
2.2 变量
含义:变量是变量就是内存当中的一块空间,这块空间存储了数据(字面量),并给空间取了名字。
三要素:变量名、数据类型、存储值
使用注意事项:
//java中的变量必须先声明,再赋值才能访问(必须手动赋值。)
int k; System.out.println(k); 这样是不行的。
//可以在一行上声明多个变量:
int a, b, c = 100;
int a = 10, b = 20, c = 100;
//声明和赋值可以分开,也可以一起做!!!
int i;
i = 100; // 先声明再赋值
int k = 200; // 声明的同时赋值
在“同一个域”当中,变量名不能重名!!!!!!
但可以重新赋值!!!!!!
{
int i = 100;
//double i = 2.0; // 重名了编译器会报错,不允许。
i = 300; // 可以重新赋值。
}
public class VariableTest02
{
static int k = 90;//类变量(静态变量)
//没有赋值,系统会赋予默认值【局部变量不会】
int j = 101;//成员变量(非静态变量)
public static void main(String[] args){
int i = 100; //i就是局部变量
//遵循‘就近原则’
System.out.println(i);
}
}
三、数据类型
数据类型分为内置数据类型和引用数据类型
1.1 内置数据类型
1.1.1 内置类型转换规则
- 八种基本数据类型中,除 boolean 类型不能转换,剩下七种类型之间都可以进行转换;
- 如果整数型字面量没有超出 byte,short,char 的取值范围,可以直接将其赋值给byte,short,char 类型的变量;
- 小容量向大容量转换称为自动类型转换,容量从小到大的排序为:byte < short(char) < int < long < float < double,其中 short和 char 都占用两个字节,但是char 可以表示更大的正整数;
- 大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用;
- byte,short,char 类型混合运算时,先各自转换成 int 类型再做运算;
- 多种数据类型混合运算,各自先转换成容量最大的那一种再做运算;
1.1.2 练习题
- short s1 = 1; s1 = s1 + 1;有什么错?
答:s1 是 short 类型,1 是 int 类型,short 和 int 混合运算的时候 short 会自动转换为 int 类型。
s1 = (short)(s1 + 1); - char 类型变量能不能储存一个中文的汉字,为什么?
答:可以,中文汉字占两个字符,char也占两个字符 - float f = 1.0 有什么错?
答:1.0 字面量被当做 double 类型处理,大容量 double 无法赋值给小容量 float。这样修改,两种方案:第一种方案是 1.0 后面添加 f/F。第二种方案是强制类型转换:float f = (float)1.0; - long a = 2147483648 有什么错?
答 :不是 long 类型存不下 2147483648,而是 java 把 2147483648 当做 int 类型来处理,但本身已经超出 int 类型范围。这样修改:long a = 2147483648L; - int i = 0xffff 有问题吗?
答:没有问题:0xffff 以 0x 开始表示十六进制表示方式,ffff 转换成十进制是:65535 - char c = 65536 有问题吗,为什么?
答:65536 已经超出 char 类型取值范围,不能直接赋值,这样修改:char c = (char)65536;
1.2 引用数据类型
Site site = new Site("Runoob")
引用数据(对象) 构造方法
- 引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。
- 对象、数组都是引用数据类型。
- 所有引用类型的默认值都是null。
- 一个引用变量可以用来引用任何与之兼容的类型。
四. 运算符
算术运算符:
+ - * / % ++ --
k = k++;
k = ++k;
关系运算符:
> >= < <= == !=
逻辑运算符:
& | ! && ||
赋值运算符:
= += -= *= /= %= //扩展运算符左右数据类型一致,应注意精度损失
三目运算符:
布尔表达式 ? 表达式1 : 表达式2
boolean sex = true;
char gender = sex ? '男' : '女';
System.out.println("性别:" + gender); //男
字符串连接运算符:
+
注意事项:
- 前缀自增自减法(++a,–a): 先进行自增或者自减运算,再进行表达式运算。
- 后缀自增自减法(a++,a–): 先进行表达式运算,再进行自增或者自减运算
实例 :
public class selfAddMinus{
public static void main(String[] args){
int a = 5;//定义一个变量;
int b = 5;
int x = ++a;// x = (++a)
int y = b++;// (y = b)++
System.out.println("自增运算符前缀运算后a="+a+",x="+x);//a=6,x=6
System.out.println("自增运算符后缀运算后b="+b+",y="+y);//b=6,y=5
}
}
五. 修饰符
5.1 访问修饰符
dedfult–掌握
(即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
private–掌握
在同一类内可见。使用对象:变量、方法。 **注意:不能修饰类(外部类)**
public–掌握
对所有类可见。使用对象:类、接口、变量、方法
protected
对同一包内的类和所有子类可见。使用对象:变量、方法。 **注意:不能修饰类(外部类)**
5.2 非访问修饰符
static–掌握
用来修饰类方法和类变量。
final–掌握
用来修饰类、方法和变量,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract
用来创建抽象类和抽象方法
六. 循环结构体–for, while 及 do…while
Java中有三种主要的循环结构:while 循环、do…while 循环、for 循环
for循环
//输出1-10
public class For {
public static void main(String[] args){
for (int i = 0; i < 10;){
i++;
System.out.println("i----"+i);
}
}
}
while循环体
//输出10-20
public class Test {
public static void main(String args[]) {
int x = 10;
while( x < = 20 ) {
System.out.println("value of x : " + x );
x++;
}
}
}
do–while循环体
//输出11-20
public class Test {
public static void main(String args[]){
int i = 10;
do{
i++;
System.out.println("value of i : " + i );
}while( i < 20 );
}
}
七. 控制语句–if、switch、break、continue
if–else
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
switch–case
switch(expression){
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句
}
break、continue
顾名思义:中断、继续