java基础语法复习

java基础语法复习

jdk安装: Oracle官网下载直接安装

环境配置: 电脑–>属性–>高级系统设置–>环境变量–>系统变量
添加 1变量名:JAVA_HOME
变量值:jdk安装路径
2变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
3修改系统变量PATH:添加%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin

第一个Java程序:

 /**
* 	
*	--> javaDoc注释 :通常用来功能性注释,一般用于注释类和方法
*@author孙勇
*@date2020-03-26
*@description我的第一个Java小程序
*/
public class HelloWorld{
	public static void main(String[] args) {
		/*
		public是修饰符(无权限,公众),class类,HelloWorld类名(首字母必须大写)
		main()方法入口执行语句
		System.out.print();输出语句 -->println()是换行输出
		\是转义符
		\n换行	\t制表符:即tab 
		打开cmd 输入 cd 路径 路径盘符:
		                      javac 类名.java (执行编译)
			      java 类名
		就可以运行第一个小程序
							中间为注释内容	
							-->多行注释
		*/
		//控制台输出print不换行,println换行,一行代码以分号结尾  -->单行注释
		System.out.print("Hello,Java,\nthis is my first lesson!");
		System.out.println("换\t行前");
		System.out.print("换行后");
	}
}

IDEA安装

下载完安装按电脑属性走
IDEA激活: 1–> 将jar包复制到安装路径的bin目录下
2–> 打开idea64.exe.vmoptions
3–> 最后一行回车后插入 -javaagent:安装路径\JetbrainsCrack-release-enc.jar
4–> 将sn文件全部复制到第二个激活码区中 关闭重新打开即可运行IDEA
在工具中编写程序:新建一个类,其余同记事本一样写完可run即可运行

反编译

class文件为字节码文件正常用记事本打开有乱码
java文件是源文件
反编译工具
IDEA会自动反编译class文件

帮助文档

必备技能:遇到不会的需要自己查询

变量与数据类型

一.变量:一个数据存储空间的表示
不同数据存入不同内存地址空间相互独立(银行存钱)
如何找到存入的数据? 需要一个变量指定名字(银行卡账户)
–>例子:住宿
宾馆hotel 前台front 根据需要分配房间 -->指出类型问题 双人 单人 总统套房等 (不同类型内存消耗不同,适合类型能降低内存空间
栈空间:先进后出,入栈出栈
假若一个人叫张三来住酒店,开三人间,房间号(内存地址)为0x00301,
另一个人也叫张三来住酒店,开单人人间,房间号(内存地址)为0x00101,
李四想找张三,是不知道哪个张三的,此时必须要房间号确定找哪个张三
内存地址不好记,给取名字
房间 变量
房间名字 变量名
房间类型 变量类型
客人 变量值
变量命名规则:
字(a-z A-Z) 下(_) 美($) 人(¥) 数((0-9) 填充
骆驼:驼峰命名法开始小写之后单词第一个字母大写
有意义:取名要取相关的可为汉语拼音和英文单词
变量命名以字下美人开头,不能以大写字母开头,以字下美人数来填充后部分
不可使用关键字public class

二:常用数据类型
分类1: 数值型 :
整型Integer
1)byte:1字节8位 范围2^8 (-128~127) 缓存区
2)short:2字节16位 范围2^16 (-32768~+32767)
3)int:4字节32位 范围2^32 (-2147483648~+2147483647) 默认
4)long:8字节64位 范围264(-263~+2^63-1)

	      非整型
		1)float:4字节32位	范围~~
		2)double:8字节64位	范围~~	默认
		
		不同类型数值运算需要类型转换在变量名前面加(类型)
		1)自动类型转换	小类型向大类型转换,隐式转换	规则:俩种类型要兼容,目标类型大于源类型	
		2)强制类型转换	数值-->大类型向小类型转换	可能溢出,精度损失
				内容-->

	非数值型	
		1)Character字符型	ASCII码:char0-->48 	char65-->A	char97-->a	符号等用到再查
		2)String字符串
		3)boolean:true	false	
-->例子:
	 char c= '9';    //不可为空单字符单引号包起来
   		 boolean flag = false;
   		 String str = "孙勇";  //可为空 双引号包起来
	byte b = 127;
   		 b = (byte)(b+1);    //越界从头开始计算 强制类型转换的一种
    		short s = 32767;
   		 long lnum = 10000000000L;   //超过int需要加L
   		int i = 1000000000;
   		 float f =1.0f;      //float后面必须加f
    		double d =1.0;
	
sout IDEA输出快捷键
psvm 快捷键主方法入口
""双引号中的内容纯输出内容
Java执行顺序是从上往下一条一条执行

常量
1)常量名通常大写
2)不同字符使用下划线分割
3)只能被复制一次1通常定义时对其初始化
例子–>
final int NUM = 10;
fianl double PI = 3.14;
int r =2;
double area = PIrr

运算符

赋值运算符 =  作用:将等于号右边的东西赋给左边的变量
实现数据的交换	//三变量交换法
		int num1 = 8;
		int num2 = 9;
		int temp = num1;	//定义一个新变量存第一个变量值的副本
		     num1 = num2;	//将第二个变量值赋给第一个变量
		     num2 = temp;	//将新变量值赋给第二个变量
Scanner使用 作用:让用户输入变量值
	步骤: 1)导包	import java.util.*; util包中的全部导入或者import java.Scanner; 	格式-->	import java.包名.类名;
	         2)提供输入入口	Scanner input = new Scanner(System.in);	IDEA快捷键alter +enter 键可直接导入Scanner;
	         3)输出提示语句	System.out.print("提示语句");
	         4)控制台输入值 int num = input.nextInt();
	

算术运算符
	+加法 -减法 *乘法  /取商 %取余 		
	++自增	 -- 自减
	++a	表示加之前的值	作用都是使a加1	不常用经常出现在面试题中 
	a++	表示加之后的值	作用都是使a加1 
复合运算符(缩写)
	+= 	-=	 *=	 /=	 %=
	a+=b;  相当于a = a+b; 其他类似

条件运算符

等于 == 结果为布尔值 true false
不等于 != 
大于
小于
大于等于
小于等于
String类型(其他所有引用类型):	equals()

逻辑运算符

1)	逻辑:运算符两侧的值都进行判断
2)	短路:运算符左侧值如果已经可以判断整个表达式值,就不会判断右侧值

与:逻辑与&	短路与&&		两者都为true 否则为false
或:逻辑或|	短路或||	两者都为false 否则为true
非 :!	原结果为true,结果就是false
快速注释: 选中ctrl+/
三元表达式: 	条件 ? 表达式1 : 表达式2;
		注意要用表达式的相关类来接收值
运算符的优先级:

PS断点调试:

1)设置断点
2)debug 调式运行程序
3)单步运行调试

选择结构

if结构
	if(条件){
		代码块1
	}else if(条件2){
		代码块2	-->可能有多个
	}else{
		代码块3
	}
	
switch结构	使用场景:等值
	switch(表达式){	
		case 常量1:
			break;
		...		-->表达式或所写变量或表达式值应该是:byte short int char String 枚举类型,不应该有double float
		case 常量n:
			break;
		default:
			break;
		
	}

错题记录:

1.注意变量的定义范围:是否为全局变量或者局部变量
2.String str = "hello"+100;
	str = "hello100";	--> 加号为String字符串最常用的连接符号,还有一种concat方法
	字符串创建对象问题:
		字符串池首先会判断是否有相同字符,然后再去创建新的字符串,new的东西都在堆里面,一定是新对象
3.== 与equals()没有区别,都是内存地址;但是String的equals()方法重写成与字符串的内容相关

char类型默认在127以内相当于byte,127以外相当于int的0-65535

循环

while循环	
	int i =0;			//变量定义
	while(<=10){		//设置循环条件
		代码块
		i++;		//变量改变
	}
do while循环
	int i = 0;			//变量定义
	do{
		代码块
		i++;		//变量改变	
	}while(i<=10);		//循环条件
for循环	-->循环次数固定时候适用
	for(int i =0;i<=10;i++){	//变量定义,循环条件,变量改变
		代码块
	}

双重循环与程序调试

fori -->IDEA for标准语句的快捷键

双重循环:
for(int i=1; i<=9;i++){ //外层循环
for(int j =1;j<=i;j++){//内层循环
} //外层循环执行一次,内层循环遍历
}
break语句 :跳出当前循环或者switch
–>代表终结必须在一定的条件基础下,同结构体中break下方一般没有代码否则报错

continue语句:跳过当前循环剩余语句继续执行下一次循环

return语句: 跳出方法,返回一个类型值;
如果用在for循环内,不论几层都会直接跳出循环所在的方法;

程序调试:
设置断点:
单步运行
观察变量

一维数组:

数组基本要素:
	标识符(数组名)	数组元素(值)	元素下标(从0开始)	元素类型
	元素类型必须相同	Object是所有类的父类
数组定义:
	1)数组声明		int[] a;
	2)分配空间		a=new int[5];	new-->Java中优先级最高,分配空间
		
		声明和分配空间一起:int[] a = new int[5];	和 int a[] = new int[5];一样
		声明分配空间和赋值一起:int a[] = {1,2,3,4,5};	必须赋值在一起否则编译报错
				    int a[] = new int[] {1,2,3,4,5};	不用new也不用指定长度,很少用
	3)数组赋值	 
		若未赋值,会自动初始化,默认值 int -->0	String -->null,也是所有引用类型的基本值	double -->0.0	char -->-\u0000会显示为一个问号在括号中,是空字符
		正常赋值 a[0]=1;...a[a.length-1]=3;	下标从0开始,到数组长度-1结束
		数组越界:只要不在0~(数组长度-1)范围内赋值或者使用都会产生数组越界异常(运行期异常)-->因为空间暂时不存在,只有运行时候才会分配空间发现错误

	4)数组使用:增删改查
		a)增加元素过程:从后向前,应该在当前值之后的值进行后移,遇到应该在当前值之前的值,在该值之后放插入
	数组名.fori	-->遍历数组快捷键:
		for(int i=0;i<数组名.length-1;i++){	}
	Arrays.toString(数组名);-->快速打印数组
冒泡排序:
	双重循环,内层循环(N-i-1)一轮,确定一个最值,外层循环(N-1)不断控制重复内层循环
	
求最值:定义一个变量temp,与数组元素逐一比较,不满足重新赋值为数组元素,循环一轮就可得到最值

选择排序–>保存下标

  • 从头向后以当前下标的元素为基础
  • 找到元素最小值进行交换
  • 如果当前下标的元素已经是最小值则不交换
    插入排序
  • 外层从第二个值开始从前向后,把当前值当作基准值
  • 内层从当前值开始从后向前,依次比较,比当前值大的后移,比当前值小的在后方插入
  • 若一直没有插入在首位插入–>插旗判断内层循环有插入?有酒结束循环,一直没有首位插入

Arrays类方法–>先导包import java.util.*;
toString() 若直接打印数组是Java地址 地址:类型@哈希码 与类型和机器有关 所有引用类型若未用这个方法一般都会打印地址值
fill() 填充
equals() 判断数组相等
copyOf() 复制数组
binarySearch() 前提有序!查找数组下标,有返回下标没有随机负数

二维数组

1)int [][] a = new int[5][5];	//对称矩阵式
2)int[][] a = new int[5][];	//可能不对称第一个里面长度不能少是二维长度
            a[0]=new int[5];	//重新对一维数组创建空间
3)int [][] c={{1,2,3,},{1,2,4,5,6},{5,6,7,8,9}};//完全不对称
9 和11

二分查找逻辑:

从中间值开始往两边分解查找 要查找的值为基准值

  • 前提:数组升序
  • 1找到中间值
  • 2比较
  • 2.1基准值与中间值相等,找到了,break;
  • 2.2基准值比中间值大,开始下标定义为中间值begin=mid;
  • 2.3基准值比中间值小,结束下标定义为中间值end=mid;
  • 3如果重复上述过程无法符合2.1则不存在
  • 4.若只剩一个元素也无法找到,需要额外标注;

增强型for–>遍历数组 IDEA快捷键–>数组名.for
for(int value:nums){//类型 变量名:数组名
//适合遍历查看
}

杨辉三角

1)第一种解法
所有一维数组第一个值为1;最后一个值为1;其他值等于上一个数组连续两个值的和		
2)第二种解法
(a+b)^n的二项展开式的系数
每一项/前一项的倍数随着列数变化(分子-1,分母+1)

小项目–>吃货联盟订餐系统

项目分析
1.欢迎页重复出现–>使用do while循环 条件(输入的数在1-5之内循环)
2.Scanner控制输入
3.分功能进入子菜单–>选择结构–>switch结构–>1-6
输入0返回–跳过后面的–>控制程序跳过剩余的代码,直接回到首位,上面循环条件需要变化
输入数为0循环继续
1)我要订餐
输入:姓名
展示菜品:–>输入选择菜品编号与份数(正整数)–>送餐时间(10-20)–>送餐地址
–>输入完成再来展示订单信息(送餐费,总费用)

	2)查看餐袋
		输入内容展示,同时增加订单状态(预定,完成)
	3)签收订单
		改变订单状态:-->已预定变为已完成(不能重复签收!)
	4)删除订单-->签收完成才能删除,预定不能删除
		要和选择的编号一致
		若把上面的订单删除了,下面的订单应该如何变化(前移)
	5)我要点赞
		要展示菜品的位置增加一栏点赞数
		点赞数+1
	6)退出系统

你可能感兴趣的:(Java基础语法复习,java)