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 数组的练习:
数组遍历。(就是列出数组的所有元素)
数组求打印最值。
数组的反转。
输入一个数求数值的索引。
基本数据类型的值传递后,不改变原值。(弹栈后方法消失)
引用数据类型的值传递后,改变原值。即使方法弹栈,但是堆内存内数组的地址还在,可以访问。

浙公网安备 33010602011771号