本文共 6600 字,大约阅读时间需要 22 分钟。
环境配置: 电脑–>属性–>高级系统设置–>环境变量–>系统变量
添加 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/*** * --> 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激活: 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; 注意要用表达式的相关类来接收值运算符的优先级:
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,与数组元素逐一比较,不满足重新赋值为数组元素,循环一轮就可得到最值 数组名.length-1;i++){>
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
从中间值开始往两边分解查找 要查找的值为基准值
增强型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/