JAVA基础语法

                             ***JAVA基础语法***

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

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

1–> 环境变量的步骤 第一个Java文件注意事项 左手无名指的控制键位

2–>IDEA右上角可配置jdk
public修饰符 class类 类名首字母大写与文件名必须一致
main()方法主入口四要素:public访问修饰符 static 静态 void 返回值类型(无返回值) main() 主方法入口
print(()不换行 println()在末尾换行
3配置项
字体设置等宽字体
Keymap可选择快捷键方式
default 百度搜索IDEA常用快捷键熟练应用
编码格式改为GBK中文格式
IDEA括号会自动补齐注意习惯
注释问题 /**回车自动生成
/*回车自动生成
//一样
自动报错功能 红色感叹号必须解决编译不可通过
除注释与引号输出语句中可出现中文内容,其他一律为英文
4反编译
class文件为字节码文件正常用记事本打开有乱码
java文件是源文件
反编译工具
IDEA会自动反编译class文件

5帮助文档
必备技能:遇到不会的需要自己查询
变量与数据类型
一.变量:一个数据存储空间的表示
不同数据存入不同内存地址空间相互独立(银行存钱)
如何找到存入的数据? 需要一个变量指定名字(银行卡账户)
–>例子:住宿
宾馆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; 其他类似

回顾 8大基本类型 控制台输入步骤 截取整数各位数的方法

条件运算符
等于 == 结果为布尔值 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.//返回值类型为void为空 之所以值不变,基本类型传值不传地址
x 与 y 交换 a 与 b实际并没有交换
4.== 与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)增加元素过程:从后向前,应该在当前值之后的值进行后移,遇到应该在当前值之前的值,在该值之后放插入
		b)
		c)
		d)
	
	数组名.fori	-->遍历数组快捷键:
		for(int i=0;i<数组名.length-1;i++){	}
	Arrays.toString(数组名);-->快速打印数组
冒泡排序:
	双重循环,内层循环(N-i-1)一轮,确定一个最值,外层循环(N-1)不断控制重复内层循环
	
求最值:定义一个变量temp,与数组元素逐一比较,不满足重新赋值为数组元素,循环一轮就可得到最值

runoob.com菜鸟教程
选择排序–>保存下标

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

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){//类型 变量名:数组名
//适合遍历查看
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值