Hello world!
-
随便新建一个文件夹,存放代码
-
新建一个java文件
- 文件后缀名为java
- Hello.java
-
编写代码
public class Hello{ public static void main(String[] args ){ System.out .print("Hello,World!") } }
-
编译javac java文件
-
运行class文件 java class文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pjuZpxmx-1589875721191)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1588644449938.png)]
java基础
关键字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y7PtzslW-1589875721193)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1588646263339.png)]
数据类型
-
强类型语言
- 要求变量的使用要严格符合规范,所有变量都必须先定义后使用
-
八大基本数据类型
- 整数
- int(最常用) byte short long(long类型要在数字后面加L)
- 小数
- float(float类型要在数字后面加f) double
- 字符
- char
- 布尔值:是 非
- boolean
- 整数
-
引用数据类型
- 类
- 接口
- 数组
拓展
整数拓展
进制 二进制(0b) 十进制 八进制(0) 十六进制(0x)
int i=10;
int i2 =010;//八进制0 == 8
int i3 = 0x10;//十六进制0x == 16
浮点数拓展
- 避免完全使用浮点数进行比较
- float 有限 离散 舍入误差 大约 接近但不等于
字符拓展
类型转换
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低-------------------------------------------------------------->高
byte -->short–>char–>int–>long–>float -->double
注意点
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在吧高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题
final 定义常量关键字
import 引入
package 包
equals 判断字符串是否相等
score 成绩
xxx.length 长度
运算符
- java 语言支持的运算符
- 算术运算符 + - * / %(取模) ++ –
- 赋值运算符 =
- 关系运算符 > < >= <= == != instanceof
- 逻辑运算符 && || !
- 位运算复符 & | ^ >> << >>> (了解)
- 条件运算符 ? :
- 扩展赋值运算符 += -= *= /=
Java Doc
- 参数信息
- @author 作者
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况
Scanner对象
java.util.Scanner是java5的新特性 ,我们通过scanner类来获取用户的输入
基本语法
Scanner scanner= new Scanner(System.in);
-
通过Scanner类的 next()与nextLine()方法获取输入的字符串,在读取前我们一般都要使用hasNext()与 **hasNextLine()**判断是否还有输入的数据。
-
next()
- 一定要读取到有效字符后才可以结束输入
- 对输入邮箱字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串。
-
nextLine()
- 以Enter为结束符,也就是说nextLine()方法放回的是输入回车之前的所有字符
- 可以获得空白。
public static void main (String [] args){
//从键盘接收数据
Scanner scanner= new Scanner(System.in);
System.out.println("请输入数据");
String str=scanner.nextLiine();
System.out.println("输出的内容为:"str)
scanner.close();
}
顺序结构
- Java 的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
- 顺序结构时最简单的算法结构
- 语句与语句之间,框与框之间是按照从上到下的顺序进行的,他是由若干个依次执行的处理步骤组成的,他是任何一个算法都离不开的一种基本算法结构。
选择结构
-
if单选结构
-
我们很多时候需要去判断一个东西是否可行,然后我们才执行,这样一个过程在程序中用if语句来表示
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D61NJn8a-1589875721195)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1588667980965.png)]
-
语法
if(布尔表达式){ //如果布尔表达式为true将执行的语句 }
-
-
if双选结构
- 有点情况true怎么样怎么样,false怎么怎么样
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AQicTfLH-1589875721198)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1588668042653.png)]
-
语法
if(布尔表达式){ //如果布尔表达式的值为true }else{ //如果布尔表达式的值为false }
-
if对选结构
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iwvn9wzA-1589875721199)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1588668361691.png)]
-
语法
if(布尔表达式1){ //如果布尔表达式1的值为true执行的代码 }else if(布尔表达式2){ //如果布尔表达式12的值为true执行的代码 }else if(布尔表达式3){ //如果布尔表达式3的值为true执行的代码 }else{ //如果以上布尔表达式都不成立执行代码 }
-
-
嵌套的if结构
-
使用嵌套的if……else语句是合法的。也就是说你可以在另一个if或者else if语句中使用if或者else if语句。可以像if语句一样嵌套else if……else。
-
语法
if(布尔表达式 1){ //如果布尔表达式1 的值为true将执行的语句 if(布尔表达式 2){ //如果布尔表达式2 的值为true将执行的语句 } }
-
-
switch多选择结构
-
多选择结构还是一个实现方式就是 switch case语句。
-
switch case 语句判断一个变量与一系列值中摸某个值相等,每个值称为一个分支
-
switch 语句中的变量类型可以是:
- byte,short ,int 或者char。
- 从Java SE 7 开始
- switch 支持字符串String类型了
- 同时case标签必须为字符串常量或者字面量
-
语法
switch(expression){ case value: //语句 break;//可选 case value: //语句 break;//可选 //你可以有任意数量的case语句 default://可选 //语句 }
-
99乘法表
public static void main(String[] args) {
for (int j = 1; j <=9 ; j++) {
for (int i = 1; i <=j ; i++) {
System.out.print(i+"*"+j+"="+(j*i)+"\t");
}
System.out.println();
}
}
猜数字小游戏
public class Text {
public static void main(String[] args) {
//生成随机数
Random ra = new Random();
//保存随机数
int ringhtNum = ra.nextInt(100) + 1;
//输入
Scanner sc = new Scanner(System.in);
int n = 0;
while (true) {
System.out.println("请输入您猜的数字");
int guessNum = sc.nextInt();
n++;
if (guessNum == ringhtNum) {
System.err.println("太棒了小宝贝你猜对了,奖励你一个 mua 小宝贝你一共猜了" + n + "次");
break;
} else if (guessNum > ringhtNum) {
System.err.println("小宝贝猜大了呢");
} else if (guessNum < ringhtNum) {
System.err.println("小宝贝猜小了呢");
}
}
}
}
方法
- Java方法是语句的集合,他们在一起执行一个功能。
- 方法是解决一类问题的步骤的有序组合。
- 方法包含于类或对象中。
- 方法在程序中被创建,在其他地方被引用。
- 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合,我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。
方法的定义
-
Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包涵一下语法:
-
方法包含一个方法头和一个方法体。
- 修饰符:修饰符是可选的,告诉编译器如何调用该方法,定义了该方法的访问类型。
- 返回值类型:方法可能会有返回值,returnValueType是方法返回值的数据类型有些方法执行所需要的操作,但是没有放回值的情况下使用关键字void。
- 方法名:是方法的实际名称,方法名和参数表共同构造方法签名。
- 参数类型:参数像是一个占位符。当方法被调用时传递值给参数,这个值被称为实参或变量。参数列表是指方法的参数类型,顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
- 形式参数:在方法被调用时,用于接收外界输入的数据。
- 实参:调用方法时传给方法的数据。
- 方法体:方法体包含具体的语句,定义该方法的功能。
修饰符 返回值类型 方法名 (参数类型 参数名){ .. 方法体 ... return 返回值 }
扩展:值传递(Java)和引用传递
方法的重载
-
重载就是在一个类中,有相同的函数名称,但是形参不同的函数。
-
方法的重载的规则:
- 方法名必须相同。
- 参数列表必须不同(个数不同,或者类型不同,参数排列顺序不同等)。
- 方法的返回类型可以相同也可以不同。
- 仅仅放回类型不同不足以成为方法的重载。
-
现实理论:
- 方法名称相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
递归
-
A方法调用B方法。
-
自己调用自己可能会造成栈溢出异常。
-
递归就是:A方法调用A方法!就是自己调用自己。
-
利用递归可以用简单的程序来解决一些复杂的问题,他通过吧一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来解决,递归策略只需要少量程序就可以描述出解题过程所需要的多次重复计算,大大减少程序的代码量,递归的能力在于用有限的语句来定义对象的无限集合。
-
递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身方法。
数组
- 数组是相同类型数据的有序集合。
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。
- 其中,每一个数据称为一个数组元素,每个数组元素可以通过一个下标来访问。
-
声明数组语法
int[] arr
-
Java语言使用new操作符来创建数组
int[] arr= new int[10]
-
数组的元素是通过索引访问的,数组索引从零开始。
-
获取数组的长度:
arrays.length
内存分析
用有限的语句来定义对象的无限集合。
- 递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身方法。
数组
- 数组是相同类型数据的有序集合。
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。
- 其中,每一个数据称为一个数组元素,每个数组元素可以通过一个下标来访问。
-
声明数组语法
int[] arr
-
Java语言使用new操作符来创建数组
int[] arr= new int[10]
-
数组的元素是通过索引访问的,数组索引从零开始。
-
获取数组的长度:
arrays.length
内存分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Za63glZX-1589875721201)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1588690809077.png)]