Java学习—Java基础(Day01—Day05)

Day1: 基础操作

 1.1 Java基础理论:

Java语言是通过Java虚拟机(JVM)实现。

JRE:Java的运行环境,包括了运行Java语言的JVM和核心类库。

JDK:Java的开发环境,包括了JRE和编译软件。

 

 1.2 小纪要:

方法与程序块之间“空行”。

运算符与其他连接要“空格”。例如 int i = 10;

 

 1.3 环境变量的配置:

电脑---属性---高级配置---path(存储程序位置)---新建一个环境(Java_Home)---将&Java_Home%放入path里,用:与其他盘分开。

 

 1.4 Java关键字:

只能全部小写,不能当类。(public void static 等等)

标识符:给各种类,变量,接口,方法起的名字。(可以含有$和_两个符号)

注意事项:不能以数字开头,不能跟关键字同名。

类或接口:一个单词首写字母大写,多单词每个单词首写字母大写

变量和方法:一个单词所有字母小写,多单词从第二个单词开始首写字母大写。

常量:所有字母大写,多单词每个单词之间用 _ 连接。

 

 1.5 标注:

//单句标注/**/段落标注

总结:简单的基础知识,可以多看几遍就记住。

敲代码要养成边思考边敲的模式。先把要敲的代码厘清(各种条件,需要什么语句),然后分步骤,再根据步骤一步一步敲出代码。

 

Day2: 量与运算符

2.1 常量:

字面值常量,自定义常量。(在面向对象的那里开始接触)

字面值常量:整数常量,小数常量,字符串常量(“”),字符常量(‘’里面只能放单个的字母,数字),布尔常量(true false),空常量(null)。

变量:在某个范围内可以改变的量。(存放同一数据类型的常量,可以反复使用)

 

2.2 数据类型:

基本数据类型,引用数据类型。(面向对象开始接触)

基本数据类型:整数型(byte short int long),小数型(float double 4,8个字节),字符型(char 两个字节,只有整数0`65535),布尔型(boolean)。

 

2.3 小纪要:

同一个区域内不能使用相同的变量名。  例:int i = 3; int i = 4;    //编译会报错

 

2.4 数据转换

隐式转换:自动将数据类型提升为范围大的类型,要得到的也是大范围类型。

强势转换:强制将所得的数据类型变为小的类型,要得到的是小范围类型。

例: int i = 3;

byte j = 4;

byte j = (byte)(i + j);  //必须声明强制转换的类型为byte

ASCII表:’a’= 97,’A’= 65,’0’= 48。

 

2.5 运算:

运算符:

%获取的是余数,/获取的是商(定义什么类型就得到什么类型的数据)

5 % 3 = 2; -5 % 3 = -2;  //结果只和左边数的符号有关,例如-5

任何一个正整数% 2不是0就是1。

 

++(--):自增1和自减1

int a = 1;int b = 2;

a = b ++;和a = ++b;输出的结果不同。(a = 2;b = 3),(a = 3;b = 3)

小窍门:对右边的数例:b 的左边的运算符号先运算,再算其他的。

例:b ++ == a,先判断b=a否,再自增1。

 

==( != ):判断句(相等和不相等),是布尔类型,输出都是true/false。

 

Day3: 逻辑、三元运算符与键盘录入

  If判断和switch判断

3.1 逻辑运算符:

&:并且,and的意思。

|:或者的意思。

^:相同为false,不同为true。

!:非,不的意思。

 

&&(||)和&的区别

&&和&的结果都是一样的,但是&具有短路效果,当 左边为false时,右边便不在执行(||和|同理,只是左边为true时,右边就不再执行)。

 

3.2 位运算符:

^:位异或,两个整数的交换数值:

int x = 10;  //将10赋值给x

int y = 20;  //将20赋值给y

x = x ^ y;  //x=x^y

y = x ^ y;  //y=x^y^y=x(两次异或等于原数据)

x = x ^ y;

System.out.println("x = " + x + " " + "y = " + y);

 //数值两次位异或等于原数据

<<:向左移,向左移1,数据就变为a*21

>>:向右移,与向左移同理,只是数据变小2n

 

3.3 三元运算符:

格式:? a : b; //可以比较大小

例:boolean c = (a > b); 如果a>b就输出true,a<b就输出false。

 

比较三个数的大小:

int x = 10; int y = 20; int z = 30;

a = (x > y) ? x : y; //得到x.y中的较大值

b = (a > z) ? a : z; //得到三个数中的最大值

 

3.4 键盘录入:

步骤:

1.import java.util.Scanner;       //导入包

2.Scanner sc = new Scanner(System.in);//创建一个叫sc的对象

System.out.println(“请输入第一个数什么的”);

3.int x = sc.nextInt();         //调用nextInt方法

 

3.5 If语句:()中比较是比较表达式

格式1:

int age = 19;

if (age >= 18){

System.out.println(“你已经成年了,少年”);  //语句1

}

//当赋值的age大于18时,就输出语句1,age<18,就不输出语句1。

 

注: 

例子 flag = false;        //将布尔常量false定义给flag

if (flag = true ){        //if中是比较表达式,所以通过,所以把布尔常量true重新赋值给flag。

System.out.println(flag);  //输出true

}

 

格式2:

if (比较表达式){

语句1;

} else{

语句2;

}

 

//当比较表达式满足时候,就输出语句1

//如果比较表达式不满足,就输出语句2

(例子:求三个数中的最大值)

 

格式3:

if (比较表达式1){

语句1;

}else if(比较表达式2){

语句2;

}else if(比较表达式3){

语句3;

}else if(比较表达式4){

语句4;

}...else{

语句n+1;

}

 

//嵌套的使用,反复练习。

 

 3.6 Switch判断:

基本数据类型,可以接受byte,short,int,char

int x = 10;

格式:switch(x){

case:

System.out.println();

break;

case:

System.out.println();

break;

case:

System.out.println();

break;

Default:

System.out.println();

break;

}

 

注:1.default可以放任何一行,但不管放在哪一行,都去找第一个case,当所有的case都不满足,才运行default。

2.当执行完一次case时或者执行完一次default时,不在进行对case的匹配,但是如果没有break,就会穿透,按顺序继续执行输出。

3.switch语句的结束标志是break或 }

//If和switch的区别:

 表示范围的时候用if。

 固定值的输入值用switch。

 

Day4:for循环和while循环

 4.1 for 循环格式:

for(初始化表达式;比较表达式;循环操作表达式){}

例:for(int i = 1;i <= 10;i ++){语句1}

int i = 1;为初始化表达式,表示i的初始值为1。

i <= 10 ; 为比较表达式,如果i<=10,则判断为true,执行语句1。

i ++ ; 为操作表达式,当i<=10为true时,才执行操作。

 

当for的操作循环结束时,i会消失。(就不存在i和其他区域的i定义冲突)

并且3个表达式都消失。

 

执行流程:初始化表达式--判断表达式--操作表达式--判断表达式--操作表达式...

 

 4.2 while 循环格式:

初始化表达式;

While(比较表达式){

语句2;

操作表达式;

}

例:  int i = 1;

 while (i <= 10){

语句2;

i++;

}

 

for 和 while 循环的区别:

while定义的初始化表达式可以在while消失后  继续利用

for 的初始化表达式在执行后就会被释放。

 

比较表达式:其比较结果为true(为true和false)时,语句才会继续执行。

4.3 ForFor的嵌套循环:

For(;;){      //外循环

For(;;){    //内循环,当内循环执行完成一套时,外循环执行1次

语句1;

}

语句2;

}

 

Break:只能在switch和循环中使用。当break执行时,表示终止循环,跳出循环。

Continue:只能在循环中使用。终止本次循环(不输出本次循环语句),继续下一次循环(前提比较表达式为true)

Return:1.把整个方法都跳出。  2.返回一个数据给调用者。

 

4.4 方法(函数):    //提高代码复用性,代码的维护性。

    //代码块,具有某种特定功能。(每个方法都是一个小功能)

格式:

修饰符 返回值类型 方法名字(参数类型 形式参数,参数类型 形式参数1...){

方法语句体1;

return返回值;

}

 

调用方式:

1.单独调用(当返回值为void的时候,没有具体的一个返回值,retrun可以省略)  方法名(参数a,参数b); 并且方法类就有System打印。

2.输出调用。

3.赋值调用。

 

4.4 方法重载:

方法名相同  1.参数个数不同。   2.参数类型不同。(顺序不同)

 

案例有:1.求1-10数据的和。  2.1-100的偶数和。  3.1-100的奇数和。

4.求水仙花数。  5.求水仙花数的个数。    6.99乘法表

7.用重载比较2个整数和2个小数相同与否。  

8.99乘法表中的一部分的输出9.用键盘录入星星的行和列

 

Day5:数组

 

 5.1 数组的格式:

  数据类型[] 数组名 = new 数据类型 [数组的长度];

    例:int[] arr = new int [5];

  数据类型[] 数组名 = new 数据类型 [] {元素1,元素2,元素3...};

    例:int[] arr = new int []{1,2,3,4,5};

  数据类型[] 数组名 = {元素1,元素2,元素3...};

    例:int[] arr = {1,2,3,4,5,6};

 

 5.2 栈和堆:

  栈:存储局部变量(定义在方法声明上和方法中的变量)。

  堆:存储new出来的数组和对象。(有一个地址)

  方法存于栈,执行完会弹栈。

 

 5.3 数组会遇到的问题:

  越界:访问了不存在的索引。

  空指针:将null定义给了数组,又输出数组。

 

 5.4 数组的练习:

  数组遍历。(就是列出数组的所有元素)

  数组求打印最值。

  数组的反转。

  输入一个数求数值的索引。

 

  基本数据类型的值传递后,不改变原值。(弹栈后方法消失)

  引用数据类型的值传递后,改变原值。即使方法弹栈,但是堆内存内数组的地址还在,可以访问。

 

posted @ 2016-10-27 19:17  随风潜入梦  阅读(139)  评论(0)    收藏  举报