Java基础
前言
学习途径:bilibili阿婆主遇见狂神说
Java学习完整路线,强烈建议收藏转发
按讲课顺序写下来的,先顺一遍基础
师范的计科老学些有的没的,我是采集学不好,班主任也说了学校教的不足以支持我们进行开发创造,所以还带我们做了编程比赛,话说题目还没拿出来><,等出题了会另开博客去记录,不过第一场应该会依据我们学的C#,Java按课程安排来看的话是大三才教的。
一、预科
1.快捷键
Ctrl+S:保存
Ctrl+Shift+Esc:打开任务管理器
explorer桌面运行任务
Alt+F4:关闭窗口
Alt+Table:切换运行窗口
2.Dos命令
①打开CMD的几种方式
1.WIN+R输入cmd回车
2.资源管理的地址栏输入cmd,直接在指定路径下了
3.Shift+右键打开Powershell
4.Windows任务栏里找
②常用Dos命令
1.盘符切换 :直接输入要进入的盘+冒号(注意一定在英文输入法环境下)
2.查看当前目录下所有文件 :dir
3.切换目录 :cd , 跨盘符需要加上参数'\d'(参数中是反斜杠,路径是斜杠)
cd.. : 返回上一级目录
4.清理屏幕: cls ,clean screen(Linux下clear)
5.退出终端: exit
6.查看电脑IP: ipconfig (Linux下ifconfig)
7.打开应用
8.ping命令
(Dos下右键粘贴,Ctrl+Z退出)
9.文件操作
md (新建)目录名
rd (移除)目录名
cd> (新建)文件名
del (移除)文件名
10.java -version 查看已安装java版本
-help -h
二、Java入门基础
1. Hello,World!
public class Hello{
public static void main(String[] args){
System.out.print("Hello,World!");
}
}
路径下cmd 编译javac Hello.java
(避免中文路径)会生成class文件
运行java Hello
(不用后缀名)
注意:Java大小写敏感,尽量使用英文,文件名和类名必须保证一致,命名规范,结尾英文分号
2.使用Idea开发
欲工善其事先利其器
集成开发环境智能报错比直接记事本敲 好
①快捷键
换背景Ctrl+Alt+A搜索background
IntelliJ IDEA help
3.Java基础语法
①注释
书写注释是一个非常重要且良好的习惯,还有写博客记录学习过程也是
//单行注释
/* 多行注释 */
/**JavaDoc:文档注释 */
是有功能的,可以加参数 ,例:@Author @Description
②标识符和关键字
标识符 符合规范提高可读性
③数据类型、变量、常量、作用域、运算符
Java的变量要严格符合规定,所有变量都要先定义再使用 ->安全性高
避免浮点数进行比较
<<
:左移相当于 * 2,但是用位运算效率极高
>>
:同理右移相当于 / 2
其他都不多赘述
④包机制
为了更好地组织类,Java提供了包机制
包的本质就是文件夹,用于区别类名的命名空间
包语句的语法格式:package pkg[. pkg[. pkg3...]];
⑤JavaDoc生成文档
javadoc -encoding UTF-8 -charset UTF-8 Doc.java
即javadoc (参数) Java文件
三、 Java流程控制
1.用户交互Scanner
Java提供的工具类 java.util.Scanner
可以使用Scanner类获取用户输入
- next()方法的使用:
next不能得到带有空格的字符串
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
//hasNext()判断有没有输入字符串,此处其实不必要判断
if(scanner.hasNext()){
//使用next()方法接收
String str = scanner.next();//等待用户输入
System.out.println("输出内容为:"+str);
}
//IO类流的不关闭会一直占用资源,养成及时关掉的好习惯
scanner.close();
}
- nextLine()方法的使用:
public static void main(String[] args) {
//从键盘接收数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入数据:");
String str = scanner.nextLine();
System.out.println("输出:"+str);
scanner.close();
}
- 输入其他数据类型:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);//接收键盘输入
int i = 0;
float f = 0.0f;
System.out.println("请输入整数:");
if (scanner.hasNextInt()) {
i = scanner.nextInt();
System.out.println("整数数据:" + i);
} else {
System.out.println("不是整数输入");
}
System.out.println("请输入小数:");
if (scanner.hasNextFloat()) {
f = scanner.nextFloat();//等待用户输入
System.out.println("小数数据:" + f);
} else {
System.out.println("不是小数输入");
}
scanner.close();
}
鼠标停在类名上Ctrl+左键查看源码,Structure中找函数
注意各方法的作用域,以及大小写
- nextDouble()小应用:
public class Demo03 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
double sum = 0;
double m = 0;
//输入不为double类型时推出循环
while (scanner.hasNextDouble()){
double x= scanner.nextDouble();
m=m+1;
sum=sum+x;
System.out.println("你输入了第"+m+"个数据,然后当前结果sum="+sum);
}
System.out.println(m+"个数的和为"+sum);
System.out.println(m+"个数的平均数是"+(sum /m));
scanner.close();
}
}
- 增强for循环
public static void main(String[] args) {
int[] numbers ={
10,20,30,40,50};
for(int x:numbers)
{
System.out.println(x);
}
}
2.练习题
①打印三角形
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >i ; j--) {
System.out.print(" ");
}
//前半
for (int j = 1; j <=i ; j++) {
System.out.print("*");
}
//接在另一半后面打印,少1
for (int j = 1; j < i; j++) {
System.out.print("*");
}
//换行
System.out.println();
}
运行效果
四、方法
1.定义
Java的方法 类似于其他语言的函数,是一段用来完成特定功能的代码片段。
2.方法重载
就是在一个类中,有相同的函数名称,但形参不同的函数。
3.命令行传参
有时候希望运行一个程序时候在传递给它消息。这要靠传递命令行参数给main()函数实现。
public class Demo02 {
public static void main(String[] args) {
// args.length 数组长度
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]:" + args[i]);
}
}
}
4.可变参数
JDK1.5开始,Java支持传递同类型的可变参数给一个方法;
在方法声明中,在指定参数类型后加一个省略号(…);
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数,任何普通的参数必须在它之前声明。
5.☆递归
- 即自己调用自己。
- 递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。如果没有将陷入死循环!
- 递归体:什么时候需要调用自身方法。
public static void main(String[] args) {
System.out.println(f(4));
}
public static int f(int n){
if(n==1){
return 1;
}else {
return n*f(n-1);
}
}
作业:计算器
- 写一个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现。
- 思路推荐:
- 写四个方法:加减乘除
- 利用循环+switch进行用户交互
- 传递需要操作的两个数
- 输出结果
思路推荐也很清楚跟着写下来就行了。
public class Test01 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入1开始运算,输入2结束运算");
int selection=scanner.nextInt();
while (selection==1) {
System.out.println("请输入第一个数字:");
double num1=scanner.nextDouble();
System.out.println("请输入第二个数字:");
double num2 =scanner.nextDouble();
System.out.println("请输入运算符(+、-、*、/):");
String operator=scanner.next();
switch (operator){
case "+":
System.out.println("运算结果为:"+add(num1,num2));
break;
case "-":
System.out.println("运算结果为:"+subtraction(num1,num2));
break;
case "*":
System.out.println("运算结果为:"+multiplication(num1,num2));
break;
case "/":
System.out.println("运算结果为:"+division(num1,num2));
break;
}
System.out.println("输入1开始运算,输入2结束运算");
selection=scanner.nextInt();
}
if(selection==2) {
System.out.println("结束运算!");
}
}
public static double add(double num1,double num2)
{
return num1+num2;
}
public static double subtraction(double num1,double num2){
return num1-num2;
}
public static double multiplication(double num1,double num2){
return num1*num2;
}
public static double division(double num1,double num2){
return num1/num2;
}
}