博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java基础语法复习
阅读量:4160 次
发布时间:2019-05-26

本文共 6600 字,大约阅读时间需要 22 分钟。

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)退出系统

转载地址:http://hbjxi.baihongyu.com/

你可能感兴趣的文章
IntelliJ IDEA单独对java类打JAR包
查看>>
Solr搜索引擎第六篇-Solr集成中文分词器IKAnalyzer
查看>>
Solr搜索引擎第七篇-Schema API详解
查看>>
Solr搜索引擎第八篇-索引提交方式
查看>>
Solr搜索引擎第九篇-DataImportHadler导入MySQL数据超详细
查看>>
Cookie顶级域名、二级域名、三级域名共享
查看>>
Elasticsearch搜索引擎第一篇-ES初识
查看>>
Elasticsearch搜索引擎第二篇-ES单机安装、结合Kibana使用
查看>>
Elasticsearch搜索引擎第三篇-ES集成IKAnalyzer中文分词器
查看>>
Elasticsearch搜索引擎第四篇-Mapping映射详解
查看>>
Elasticsearch搜索引擎第五篇-索引管理
查看>>
Elasticsearch搜索引擎第六篇-分词器
查看>>
Elasticsearch搜索引擎第七篇-文档管理
查看>>
Elasticsearch搜索引擎第八篇-集群和路由详解
查看>>
Elasticsearch搜索引擎第九篇-搜索API
查看>>
Elasticsearch搜索引擎第十篇-Query DSL详解
查看>>
Elasticsearch搜索引擎第十一篇-Suggest查询建议
查看>>
Elasticsearch搜索引擎第十二篇-聚合分析
查看>>
Elasticsearch搜索引擎第十三篇-集群如何规划
查看>>
Elasticsearch搜索引擎第十四篇-Java客户端调用
查看>>