【Java学习记录2】java入门——一周学习梳理

Java入门之“我”不熟悉的知识点



前言

因为已经有了一些c/c++,python基础,所以看韩顺平数组之前的视频都是很快速的过了一遍,且把他的笔记pdf浏览了一下,在这里记录一下自己觉得比较陌生的java小知识点。
声明!!:
本学习记录只记录本人不太懂的知识点,本人懂的一些基础语法我就没写哈!

直接上韩老师的视频链接:https://www.bilibili.com/video/BV1fh411y7R8/?p=161&spm_id_from=pageDriver&vd_source=9b9c58d0ef80b422465bf1f7babe166e


一、JRE/JDK是什么?

  • JDK:Java Development Kit
  • JRE:Java Runtime Environment
  • JRE就是运行Java字节码的虚拟机。但是,如果只有Java源码,要编译成Java字节码,就需要JDK,因为JDK除了包含JRE,还提供了编译器、调试器等开发工具。

  • java:这个可执行程序其实就是JVM,运行Java程序,就是启动JVM,然后让JVM执行指定的编译后的代码;
  • javac:这是Java的编译器,它用于把Java源码文件(以.java后缀结尾)编译为Java字节码文件(以.class后缀结尾);
  • jar:用于把一组.class文件打包成一个.jar文件,便于发布;
  • javadoc:用于从Java源码中自动提取注释并生成文档;
  • jdb:Java调试器,用于开发阶段的运行调试。

一个Java源码只能定义一个public类型的class,并且class名称和文件名要完全一致;

使用javac可以将.java源码编译成.class字节码;

使用java可以运行一个已编译的Java程序,参数是类名。
在这里插入图片描述


二、杂记

1.java代码最最基础的框架

代码如下(示例):

public class Hello{
	public static void main(String []args){
		System.out.println("ya!");
	}
}
class Dog{
		public static void main(String []args){
		System.out.println("dog!");
	}
}

System ‘S’记得大写, 且main方法一定是‘static’

文件中有中文时,记得在文件→设置文件编码→GBK

什么是编译:java源文件通过编译器编译成JVM可以识别的字节码文件.class

什么是运行:有了可执行的java程序(.class字节码文件)通过java.exe对字节码文件进行执行,本质就是.class装载到jvm机执行


2.转义字符

\t :一个制表位,实现对齐的功能
\n :换行符
\\ :一个\
\" :一个
\' :一个' 

3.代码规范

  1. 类,方法的注释,要以javadoc的方式来写
  2. 非java doc的注释,往往试给代码的维护者看
  3. 问文件使用utf-8编码
  4. 行宽度不要超过80字符
  5. 代码编写次行风格和行尾风格(花括号的位置)

4. DOS指令

DOS:Disk Oprerating System 磁盘操作系统 win+r →help可以看所有指令

…\到上一级目录

dir d:\abc\test200 查看当前目录有什么

cd /D c: 从d盘切到c盘

cd /d d: 从c盘切到d盘 或者直接 d:

cd d:\abc\test200 切换到当前盘的其他目录下 (绝对路径)

cd …\abc2\test200 切换到当前盘的其他目录下 (相对路径)

cd … 切换到上一级

cd \ 切换到根目录

tree d:\Practice 看出这个目录下的所有子目录

cls 清屏

exit 退出

md创建文件 rd删除文件 copy 拷贝文件 del 删除文件

copy ok.txt e:\ok.txt

echo 输入内容到文件 echo hello > hello.txt

type move剪切


5. java数据类型

在这里插入图片描述

使用浮点数时的陷进(比较浮点数相等)

double num11 = 2.7;
double num12 = 8.1 / 3;
System.out.println(num11);  // 2.7
System.out.println(num12);  //接近2.7的一个小鼠,而不是2.7 2.69999 ..7
//得到一个重要的使用点: 当我们对运算结果是小数的进行相等判断是,要小心
//应该是以两个数的差值的绝对值,在某个精度范围类判断
if( num11 == num12) {
System.out.println("num11 == num12 相等");
}
//正确的写法 , ctrl + / 注释快捷键, 再次输入就取消注释
if(Math.abs(num11 - num12) < 0.000001 ) {
System.out.println("差值非常小,到我的规定精度,认为相等...");

6.基本数据类型和String类型的转换

  1. 基本类型转String类型
    语法:将基本类型的值 + “”即可
int n1 = 100;
float n2 = 1.1f;
double n3 = 3.4;
boolean b1 = true;
String str1 = n1 + “”;
String str2 = n2 + “”;
String str3 = n3 + “”;
String str4 = n4 + “”;
System.out.println(str1 + " " +str2 + " " + str3 + " " +str4);
  1. String类型转基本数据类型
    通过基本类型的包装类调用parseXX方法即可
Integar.parseInt("123");
Double.parseDouble("123.1");
Float.parseFloat("123.45");
.....
  1. 字符串转成字符
char  `String s5 =123”;
s5.charAt(0) 得到s5字符串的第一个字符‘1’`

7. 逻辑运算符

  1. &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高
    & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低
  2. ||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高
    | 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低

8. 标识符命名规范

  1. 包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如 com.hsp.crm
  2. 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz [大驼峰]
    比如: TankShotGame
  3. 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [小驼峰, 简称 驼峰法]
    比如: tankShotGame
  4. 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
    比如 :定义一个所得税率 TAX_RATE

9. 键盘输入语句Scanner

直接上代码好吧

import java.util.Scanner
public class Input{
	public static void main(String[] args){
			Scanner myScanner = new Scanner(System.in);
			System.out.println("请输入名字");
			//当程序执行到 next 方法时,会等待用户输入~~~ 
			String name = myScanner.next(); //接收用户输入字符串
			System.out.println("请输入年龄");
			int age = myScanner.nextInt(); //接收用户输入 int
			System.out.println("请输入薪水");
			double sal = myScanner.nextDouble(); //接收用户输入 double
			System.out.println("名字=" + name+ " 年龄=" + age + " 薪水=" + sal);
	}
}

三、一些好玩的编程小练习(全是本人自己动手写过)

1. 打印九九乘法表

重点是在 a * b = c 中如何确定 a 和 b
上代码:

//打印九九乘法表
public class HelloWorld {
    public static void main(String []args) {
       for(int i = 1; i<= 9; i++){
	   	for(int j = 1; j<=i; j++){
			System.out.print(j + "*" + i + "=" + j*i + "\t");
	   	}
		System.out.println();
	   }
    }
}

结果:
在这里插入图片描述


2. 打印金字塔(三种金字塔)

在这里插入图片描述
上代码, 重点是找规律!

//1
public class helloworld {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入层数");
        int layer = myScanner.nextInt();
        assert layer > 0;
        for(int i=1; i<=layer; i++){
            for(int j=1; j<=i; j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

//2
思路:
假设共有n层,每一层i的*2i-1个,且每一层前面的空格数是n-当前层数i
import java.util.Scanner;
public class helloworld {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入层数");
        int layer = myScanner.nextInt();
        assert layer > 0;
        for(int i=1; i<=layer; i++){
            for(int m=0; m<=(layer-i); m++){
                System.out.print(" ");
            }

            for(int j=1; j<=(2*i-1); j++){
                System.out.print("*");
            }
            System.out.println();
        }
		    //myScanner没有被关闭。这可能会导致内存泄漏或其他资源管理问题。
        myScanner.close(); // 关闭myScanner
    }
}
//3
import java.util.Scanner;

/*
思路1:
除开第一层和最后一层,其他层数两个*中间的空格随着1.3,5,7,...递增 
2(i-1)-1 +一个判断
每一行前面的空格规律还是一样
思路2:
每一层只有第一个和最后一个以及最后一行要输出*
*/
public class helloworld {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入层数");
        int layer = myScanner.nextInt();
        assert layer > 0;
        for(int i=1; i<=layer; i++){
            //打印前面的空格
            for(int m=1; m<=(layer-i); m++){
                System.out.print(" ");
            }
            
            for(int j=1; j<=(2*i-1); j++){
                if(j==1||j==(2*i-1)||i==layer){
                    System.out.print("*");
                }else{
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
        myScanner.close(); // 关闭myScanner
    }
}

结果:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3. 打印水仙花数

重点是如何获取百位,十位,各位的数!

package homework;
import java.util.Scanner;
/*
判断一个整数是否是水仙花数,是指一个3位数,其各个位上的数字立方和=其本身
如 153 = 1*1*1 + 3*3*3 + 5*5*5
 */
public class homework02 {
    public static void main(String[] args){
        Scanner myScanner = new Scanner(System.in);
        System.out.println("输入一个数");
        int num = myScanner.nextInt();
        //拆分成百位,十位,个位
        int baiwei = num / 100;
        int shiwei = (num % 100) / 10;
        int gewei = num % 10;
        int all = baiwei * baiwei * baiwei + shiwei * shiwei * shiwei + gewei * gewei * gewei;
        if(all == num){
            System.out.println("是水仙花数");
        }else{
            System.out.println("不是水仙花数");
        }
        myScanner.close();
    }
}

结果:输入“153”,打印是水仙花数

4. 求出1-1/2+1/3-1/4…1/100

重点是数据类型的正确使用,以及符号的变换该如何实现!

public class homework05 {
    public static void main(String[] args){
        double sum = 0;
        for(int i = 1; i<=100; i++){
            sum += Math.pow(-1.0, i-1) * (1.0 /i);
        }
        System.out.println(sum);
    }
}

5. 求出1 + (1+2) + (1+2+3) +…

很简洁,其实我觉得我写的比韩老师的快速,哈哈哈哈!

public class homework05 {
    public static void main(String[] args){
        double sum1 = 0;
        double sum2 = 0;
        for(int i = 1; i<=100; i++){
            sum1 += i;
            sum2 += sum1;
        }
        System.out.println(sum2);
    }
}

总结

先学到这里,下个周天再来更新,不过要国庆了,可能会国庆后期再来!
最重要的还是要多动手写代码,提升代码思维呀~
记录于2023.9.24

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
文件上传是Web开发中常见的功能之一,Java中也提供了多种方式来实现文件上传。其中,一种常用的方式是通过Apache的commons-fileupload组件来实现文件上传。 以下是实现文件上传的步骤: 1.在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> ``` 2.在前端页面中添加文件上传表单: ```html <form method="post" enctype="multipart/form-data" action="upload"> <input type="file" name="file"> <input type="submit" value="Upload"> </form> ``` 3.在后台Java代码中处理上传文件: ```java // 创建一个DiskFileItemFactory对象,用于解析上传的文件 DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置缓冲区大小,如果上传的文件大于缓冲区大小,则先将文件保存到临时文件中,再进行处理 factory.setSizeThreshold(1024 * 1024); // 创建一个ServletFileUpload对象,用于解析上传的文件 ServletFileUpload upload = new ServletFileUpload(factory); // 设置上传文件的大小限制,这里设置为10MB upload.setFileSizeMax(10 * 1024 * 1024); // 解析上传的文件,得到一个FileItem的List集合 List<FileItem> items = upload.parseRequest(request); // 遍历FileItem的List集合,处理上传的文件 for (FileItem item : items) { // 判断当前FileItem是否为上传的文件 if (!item.isFormField()) { // 获取上传文件的文件名 String fileName = item.getName(); // 创建一个File对象,用于保存上传的文件 File file = new File("D:/uploads/" + fileName); // 将上传的文件保存到指定的目录中 item.write(file); } } ``` 以上代码中,首先创建了一个DiskFileItemFactory对象,用于解析上传的文件。然后设置了缓冲区大小和上传文件的大小限制。接着创建一个ServletFileUpload对象,用于解析上传的文件。最后遍历FileItem的List集合,判断当前FileItem是否为上传的文件,如果是,则获取文件名,创建一个File对象,将上传的文件保存到指定的目录中。 4.文件上传完成后,可以给用户一个提示信息,例如: ```java response.getWriter().write("File uploaded successfully!"); ``` 以上就是使用Apache的commons-fileupload组件实现文件上传的步骤。需要注意的是,文件上传可能会带来安全隐患,因此在处理上传的文件时,需要进行严格的校验和过滤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值