目录
2.1变量与常量
2.1.1关键字与表达字
while | catch | double | break | try | switch | void | assert | boolean | transient |
super | package | this | throw | throws | static | new | import | return | strictfp |
short | native | abstract | final | public | private | instanceof | finally | default | volatitle |
protected | int | float | do | long | goto | synchronized | char | for | byte |
interface | class | enum | if | extends | const | continue | else | case | implements |
2.1.2标识符与命名的规范
标识符:给java中的类、方法、变量、命名的符号。
标识符命名规则:1、只能以字母、数字、下划线以及美元符号组成,并且开头不能为数字。
2、大小写有区分,长度无限制。
3、不能为关键字和保留字。
2.1.3数据类型
数据类型一般分为基本数据类型和引用数据类型两大类。
基本数据类型又分为数值型、字符型和布尔型。
引用数据类型又分为类、接口和数组。
2.1.4常量的定义与赋值
变量的本质就是一个储存空间,其中的空间位置是确定的,但内部放置的不确定。
变量的声明如下:
1、数据类型 变量名;变量名=变量值;
2、数据类型 变量名=变量值;
2.1.5常量
常量和变量的语法类似,只需要在变量声明语法前加一个final关键字就OK啦。
常量的声明如下:
final 数据类型 常量名 = 常量值;
2.1.6变量的类型转换
Java中的数据转换分为自动类型转换和强制类型转换。
2.1.7Scanner的使用
scanner的使用是因为目前编写的程序都只能有简单的输出,然而有些程序需要用户通过键盘输入一些内容,此时便需要借助Scanner类。
package tan;
import java.util.Scanner;
public class damn{
public static void main(String [] args){
Scanner sc = new Scanner(String.in);
System.out.println("请输入一串数字:");
String num = sc.next();
System.out.println("你输入的一串数字是:"+num);
}
}
请输入一串数字:123456
你输入的一串数字是:123456
2.2运算符与表达式
2.2.1算数运算符
+ | 加法运算以及字符串的连接 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取整运算,即求余数 |
2.2.2赋值运算符
= | 将右边的值赋值给左边的变量,例如:num=8。 |
2.2.3关系运算符
> | 大于 | >= | 大于等于 |
< | 小于 | <= | 小于等于 |
== | 等于 | != | 不等于 |
2.2.4逻辑运算符
& | 与运算 |
| | 或运算 |
^ | 异或运算 |
! | 非运算 |
&& | 短路与运算 |
|| | 短路或运算 |
2.2.5三元运算符
三元运算符示例如下:
条件表达式 ? 表达式1 : 表达式2 ;
2.2.6运算符的优先级
1 | 括号 | () | |
2 | 正负号 | +、- | 从右到左 |
3 | 一元运算符 | ++、-- | 从右到左 |
4 | 乘除 | *、/、% | 从左到右 |
5 | 加减 | +、- | 从左到右 |
6 | 移位运算 | >>、<<、>>> | 从左到右 |
7 | 比较大小 | >、<、>=、<= | 从左到右 |
8 | 比较是否相等 | ==、!= | 从左到右 |
9 | 换位与运算 | & | 从左到右 |
10 | 按位异或运算 | ^ | 从左到右 |
11 | 按位或运算 | | | 从左到右 |
12 | 逻辑与运算 | && | 从左到右 |
13 | 逻辑或运算 | || | 从左到右 |
14 | 三元运算符 | ?: | 从右到左 |
15 | 赋值运算符 | = | 从右到左 |
2.3选择结构
2.3.1if语句
if(条件表达式1){
代码块1;
}else if(条件表达式2){
代码块2;
}
2.3.2switch语句
switch(变量){
case 值1;
代码块1;
break;
case 值2;
代码块2;
break;
}
2.3.3两种选择结构的对比
if语句一般用于区间值的判断,switch一般用于确定值的判断。
2.4循环结构
2.4.1for语句
for(循环初始化表达式;循环条件表达式;循环后的操作表达式){
//循环体
}
2.4.2while语句
while(条件表达式){
//循环体
}
2.4.3do...while语句
do{
//循环体
}while(条件表达式);
2.4.4break语句与continue语句
break用于强行退出循环,不执行循环中剩余的语句。
continue用于只能终止某次循环,继续下一次循环。
2.5方法
2.5.1方法的声明和调用
方法必须先声明才能在其它代码中使用。
方法声明格式如下:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,…){
//方法体;
retuen 返回值;
}
2.5.2方法重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可,这种现象就称为方法重载。
2.5.3方法递归
package tan;
import java.util.Scanner;
public class damn{
public static void main(String [] args){
Scanner sc = new Scanner(String.in);
System.out.println("请输入要计算的位数:");
String num = sc.nextInt();
int fib=fib(num);
System.out.println("斐波那契数列中第 " + num + "位数字为:"+ fib );
}
public static int fib(int n){
if(n==1||n==2){
return 1;
}else{
return fib(n-1)+fib(n-2);
}
}
}
请输入要计算的位数:
30
斐波那契数列中第30为数字为:832040
2.6数组
2.6.1常见操作
1、通过索引操作元素
2、数组的遍历(foreach循环)
3、获取数组的最值
4、通过值获取索引
5、数组元素的反转
foreach循环语法示例如下:
for(数据类型 变量:数组){
System.out.println(变量);
}
2.6.2数组排序算法
1、冒泡排序
package tan;
public class 冒泡排序{
public static void main(String [] args){
int[] arr = new int[]{10,5,12,13,7,4,2,15,9};
damn(arr);
System.out.println("排序后的数组为:");
for(int num : arr){
System.out.print(num + " ");
}
}
public static int damn(int[] arr){
//外层循环控制趟数
for(int i=arr.length-1;i>0;i--){
for(int j=0;j<i;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;//交换元素值
}
}
}
}
}
2、选择排序
package tan;
public class 选择排序{
public static void main(String [] args){
int[] arr = new int[]{10,5,12,13,7,4,2,15,9};
damn(arr);
System.out.println("排序后的数组为:");
for(int num : arr){
System.out.print(num + " ");
}
}
public static int damn(int[] arr){
//把每次选择完的元素中的最小值放在第一位
for(int i = 0 ; i < arr.length-1 ; i++){//记录最小值坐标
int min = i;
for(int j = i+1 ; j < arr.length ; j++){
if(arr[j] < arr[min]){
min = j;
}
}
if(min != i){
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;//交换元素值
}
}
}
}
2.6.3二分查找法
二分查找法是性能更高效的查找算法。二分查找法又称折半查找法,其算法思想是每次查找数组最中间的值,通过比较大小关系,决定在从左边还是右边查询,知道查询到为止。
2.6.4二维数组
二维数组的每一个元素都是一个数组。
创建二维数组的语法如下:
数据类型[][] 数组名 = new 数据类型[m][n];
2.7章节小结
本章节主要介绍了Java基础语法,讲解不是很详细但都是最重要的。
欢迎大家指出错误,如有需要完善请在评论区告诉我!!!欢迎大家积极指出我的问题。
类与对象(基础篇)
1、面向对象的概念
1、面向对象是以对象为核心,强调时间的角色、主题,在宏观上使用对象进行把控,二微观上依然是面向过程。
2、面向对象具有抽象、封装、继承、多态的特性
2、面向对象编程
2.1、类的定义
类主要由变量和方法组
变量定义格式:
修饰符 变量类型 变量名 = [默认值];
方法定义格式:
修饰值 返回值类型 方法名(形参列表){}
例:创建三个空白类
public class 类1{
}
class 类2{
}
class 类3{
}
2.2对象的创建与使用
对象创建语法格式:
类名称 对象名称 = new 类名称();
例:
public class Student{
public static void main(String[] args){
Student student1 = new Student();//创建的第一个变量
student1.age = 18;
student1.name = "张三";
student1.study();
Student student2 = new Student();//创建的第二个变量
student2.age = 24;
student2.name = "李四";
student2.eat("饼干");
}
}
2.3成员变量默认值
数据类型 | 默认值 | 数据类型 | 默认值 |
整型 | 0 | 布尔型 | false |
浮点型 | 0.0 | 引用类型 | null |
字符型 | '\u0000' |
3、构造方法
3.1什么是构造方法
构造方法的调用语法格式:
修饰符 类名(形参类型){}
3.2构造方法的使用
public class gouzao{
public static void main(String[] args){
Student student1 = new Student();//无参构造方法创建对象
Student student2 = new Student("张三",23);//有参构造方法创建对象
}
}
4、this关键字
4.1this关键字的使用
public class point{
public static void main(String[] args){
double x;
double y;
public point(double x,double y){
this.x=x;
this.y=y;
}
public double print(point p){
double xlen=this.x-p.x;
double ylen=this.y-p.y;
return Math.sprt(xlen*xlen+ylen*ylen);
}
}
}