目录

二:Java基础语法(基础篇)

1.数据类型

2.关键字

3.运算符

4.Java的输入输出

5.流程控制语句

6.数组(很重要)

7.小结


二:Java基础语法(基础篇)

1.数据类型

基本数据类型:共8个(在小化大的时候系统可以自动进行;反之,强制转换大化小会丢失字节,造成后果由程序员负责)

  1. byte:1个字节(字节流就是一个字节一个字节的读取)
  2. short:2个字节
  3. int:2个字节
  4. long:8个字节
  5. float:4个字节(使用String.format( )或者printf可以保留小数点)
  6. double:8个字节(浮点型)
  7. char:1个字节(字符流是按照Unicode编码形式,两个字节两个字节的读取)
  1. 这里引出几种编码形式
  2. 最早的:ASCII码(1个字节编码1个汉字)
  3. 然后:因为发现中文太多,结果后来采用Unicode(2个字节编码1个汉字)
  4. 最后:还是不够用,使用UTF-8编码解决的汉字不够用的问题(3个字节编码1个汉字)
  1. boolean:4个字节—取值为true或者false(布尔类型)

引用数据类型:String,ArrayList,Scanner(其实就是某个类) Java为了引入自己的特点:创建了包装类,就是将基本数据类型封装成为类

  1. Integer——int
  2. Double——double
  3. Character——char
  4. 上面的包装类也会在Java中的JDK库中学习
  5. 新加的String字符串类,底层基于数组实现(关于字符串后面会有一大章重点学习)

(Ps:写几个常用的)

2.关键字

先总结一下重要的关键字:

  1. new(无法实例化abstract类和interface(抽象类和接口))
  2. class,interface(接口),package(包)
  3. extends(继承),implements(实现)
  4. final,abstract(抽象的),static(静态的)
  5. this,super
  6. public,private,protected,default(默认的)(这个在类设计进阶的时候在详细聊聊)

在聊一聊他们的作用

  1. final(最终的)
  1. 修饰类:类无法再被继承
  2. 修饰成员属性:该属性无法再被修改
  3. 修饰成员方法:无法被子类重写
  1. new(实例化对象;创建引用时)
String str = new String();
//这个new相当于实例化String类,创建了一个对象,并且是在堆区创建对象,栈区创建了str引用(指针)

String str = "Hello World!";
//这个是直接在栈区中的字符串常量池子中创建了字符串"Hello World!"
//有一张图可以再复习一下

String[] str = new String[];
//这三个完全不一样,两个new的作用也不一样

Object[] object = new Object[10];
//虽然这个是接口,但是并没有实例化接口,这里接口并不是实例化的意思,而是为这个引用开辟了一块空间
  1. class,interface(abstract)

3.运算符

  1. +,-,*,/,%(easy,不过注意一下/和%,考试肯定经常考):二元运算符
  2. ++,--简写的时候使用:一元运算符
i++;
i = i + 1;
//两者效果一样,前者更加简洁
i++;
++i;
//两者效果其实一样,但是编译过后形成的汇编语言其实不一样
int n = 10, i = 1;
n = ++i;//这个先加在赋值,所以n=12 i=2
n = i++;//这个先赋值在相加,所以n=11 i=2
  1. <,==,!=等等:关系运算符,返回值为布尔类型
  2. ||,&&,==:与上面的结合起来使用;与第五点相比连用两个具有短路作用(可以节省cpu运算资源)
  3. |,&:也可以用于逻辑运算
  4. =:赋值运算符,优先级很低
  5. 三元运算符:写法更加简洁,可以与if,else条件判断相互替换(如果掌握的不熟,可以先用if,else)
  6. instanceof:java特有,用于判断一个对象是否是某一个类的实例,返回值为布尔类型
Scanner scanner = new Scanner(System.in);
System.out.println(scanner instanceof Scanner);
//会输出true
int max=a>b?a:b;
//三元运算符,很简洁比较方便

4.Java的输入输出

  1. Java采用Stream流的形式管理输入输出
  2. 在学习阶段常常使用Scanner类,在控制台进行输入(已经掌握的很熟练了)
  3. 在实际情况上,会有多种数据源,Stream流采用的更加频繁
  4. 在IO流那一章会详细介绍java是如何管理输入输出的(下面是最基本的四个输入输出抽象类
  1. InputStream
  2. OutputStream
  3. Reader
  4. Writer

下面介绍一下Scanner:(毕竟考试和算法,使用的很多)

  1. 首先这个类需要导包:import java.uitl.Scanner;
  2. 然后,因为这个类中的方法并不是static的,因此需要实例化Scanner类
    Scanner scanner = new Scanner(System.in);
  3. 最后便可以使用了

Scanner类使用过程需要注意的几个点:

  1. nextLine()与next()方法不一样
  2. nextLine():读取一行,截断值为Enter——回车键
  3. next():读取一个字符串,截断值为space——空格
  4. Scanner类中并没有读取字符的功能:并没有nextChar()
  5. 如果要读取字符串,需要使用Character包装类(后面在JDK基础类库中详细介绍)
  6. 还有就是print(),println(),printf()之间的区别

5.流程控制语句

顺序结构语句

  1. 赋值语句:i +=i;
  2. 空语句:;(就是单独一个;)(*)
for(;;){}
//目前遇到的

return;
//不太清楚这个有什么用,这里的;和return
  1. 复合语句(*)

选择语句

  1. if,else,else if
if(){   }
else{   }
//第一种结构


if(){    }
else if(){    }
else{    }
//第二种结构


if(){    }
if(){    }
else(){     }    
//第三种结构

/**总结一下
 *else和default很像
 *如果前面的条件都不满足就执行这个代码块里面的内容
 *并且是可写可不写的
 */
  1. switch,case
switch(str){
    case "1":break;
    case "2":break;
    default:
}
/**注意一下
 *java中的switch是可以支持字符串的
 *记得好像是在JDK 8 中提出的新特性
 *还有就是一定要记得使用break跳出switch语句
 */

循环语句

  1. for:这里在补一个增强for循环,java为了方便遍历数组(集合框架推出了这个,内置迭代器)
int[] array = {1,2,3,4,5,6};
for(int i:array){
    System.out.println(i+" ");
}//增强for循环,也可以叫做foreach循环

//下面补一个后面在集合框架要学的迭代器
//(*)
  1. while:在不确定循环次数的时候经常使用,配合break;(其实for循环也可以实现:for(;;))
    eg:(1)循环输入时,当读取到-1时为止(2)不知道循环结束的具体次数时候
  2. do—while(几乎很少用到……)

转移语句

  1. break:中断整个循环(很重要,常常与选择语句和循环语句结合使用,下同)
  2. continue:跳过某一次循环
  3. return:这个不太会(回收伏笔了)(*)

6.数组(很重要)

数组的创建

int a[];
int[] a;
//声明数组,a为引用数据类型(指针)

a = new int[10];
//分配空间,容量为10,分配空间后每个值默认为0,boolean形为false 

a.length;
//length为数组的成员属性,表示长度

数组的遍历

//两种
//1.for循环(......)
//2.增强for循环,foreach循环
for(int i ; a){
    Syste,.out.println(i);
}

数组的底层原理:其实就是顺序表(在后面集合框架会详细介绍)

二维数组

int[][] a;
int a[][];
//声明数组,创建引用

a = new int[3][4];
a = new int[3][];
//java允许创建不规则数组,允许每一行长度不同

int a[][]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int x[][]={{10,20,30,45},
{15,25,35,50},
{19,28,38,49}};
//可以直接初始化

a.length;
//表示数组的行数
a[i].length;
//表示数组第i行的元素的个数

7.小结

  1. 掌握基本数据类型和操作运算
  2. 掌握顺序结构、选择结构和循环结构,具备运用其解决实际问题的能力
  3. 理解一维数组和二维数组定义形式,掌握ForEach遍历循环