Java初学笔记

Java

学习之前

markdown

  1. 标题

    一级标题使用#(后接空格

    二级标题使用##(同上理

    n级标题使用n个#(typora似乎最多只支持六级标题


  2. 字体方面

    字体加粗使用** **(空格中间填文字)

    字体变为斜体使用* *(同上)

    ***字体加粗并变斜体**字体左右两边用三次

    画横线 例如:我永远喜欢加藤惠

    实际上是文字“我永远喜欢加藤惠”左右两侧加~~


  3. 引用

    例如

    The journey is the reward

    实际上是> The journey is the reward

    即大于号+空格 再加要引用的句子


  4. 分割号

    使用—即可 即减号*3


  5. 列表

    • 一种是有序列表 直接打1.,Typora就会出现有序列表 再之后只要按回车就可以出现之后的列表了

    • 令一种是无序列表,则是在行头打- 即减号+空格 就会出现无序列表


  6. 图片

    例如下图我老婆

纱雾

实际上是!+[]再加上()其中()中间加入图片的链接

链接分为两种:

一种为本地图片,版本高的Typora可以直接在()里添加图片

但是似乎我的 0.9.78 版本就不行,只能从格式里找到图片,再添加本地图片
如果要添加到CSDN上可以按图片 然后找到自己要的图片点击就好了

第二种是网络图片

可以在网络上找到一张图片,右键点击,找到检查元素,

很容易找到一个网址

然后![] ( )输入网址即可

例如

斯蒂芬

注意这里的!一定是英文模式下的,在中文模式下是无法识别的


  1. 快捷键

    这里介绍几个常用但是不一定知道的

    复制粘贴就不讲了

    Ctrl+z撤销键,之前我是在PR上认识到的,以为只是在PR上使用,后面发现哪里都可以

    Ctrl+s保存键,建议每五分钟按一次,没事也多按按,没有坏处

    Windows+r打开命令行

    Windows=e打开我的电脑

    Ctrl+Alt+del(即数字9键下面的·)


  2. CMD的一些使用

    首先是打开方法

    第一种是点开开始 ,找到Windows系统 点击命令提示符即可

    第二种是上面的Windows+r可以打开控制台 然后输入cmd就可以了(注意有管理员身份运行

    可以取得最高权限,虽然我暂时也不知道有什么用)(比较常用

    然后是CMD的使用方法了

基本的Dos命令

  1. 盘符切换 直接在某盘按其他盘的名称 再加冒号即可

  2. 查看当前目录下的全部文件 在>后面加dir即可

  3. 切换目录 如果目录是在不同盘下 则输入输入 cd /d x:

    这里的x是盘的符号

    如果是在同一盘下 则直接输入cd x:即可

  4. 返回上一目录栏:cd…

  5. 清理屏幕 输入:cls (clear screem)

  6. 退出终端:exit

  7. 查看电脑ip:输入ipcomfig

  8. 打开计算器:calc

  9. 打开笔记本:notepad

  10. ping命令:ping+网址(可用来查看网址的ip)

  11. 创建文件夹:md(make decument)

  12. 删除文件夹:rd(remove decument)

  13. 创建文件:cd>名称+后缀

  14. 删除文件:del 文件名(要加后缀

开始学习

放一张初音

Java的版本

  • JavaSE 最基础的版本,主要用来开发桌面程序与控制台程序…

  • JavaME 嵌入式开发,主要用于开发手机,小家电…

  • JavaEE E企业级开发,web端,服务器开发…

JDK JRE JVM

JDK:Java Develoment Kit (Java开发工具)

JRE:Java Runtime Environment(Java运行环境)

JVM:Jave virtual Machine(Java虚拟机)

包含关系

JDK安装

JDK安装教程

HalloWorld

  1. 建立一个文件夹

  2. 新建一个java文件(即改文件名后缀)

    • 后缀为java
    • 如果找不到后缀,需要自行打开
    • 文件名为Hello.java
  3. public class Hello{
    	public static void main(String[] args){
    		System.out.print("Hello,World!");
    	}
    }
    

    特别注意!!!!一定要先保存,再进行下一步

  4. 编译javac java文件,会生成一个class文件

  5. 运行class文件,Java class文件 运行方式如下[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VKeYuw03-1604835904007)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20201105093006464.png)]

  6. 遇到的问题

    1. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iuoWueob-1604835904008)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20201105223250509.png)]

    若是World后面有!会出现这样的错误。这是因为你用了中文!!!**千万不要用中文!!**即打出了中文的!不是英文状态下的!,看起来没什么区别,但是实际上在计算机里是不一样的代码,而中文的代码有可能会出现上面的问题。

    1. 单词大小写也要注意,Java是大小写敏感的
    2. 尽量使用英文
    3. 文件名和类名必须保持一致,然后首字母要大写

Java运行机制

先介绍两种机制

  • 编译型:是指把所有的代码全部编译完成后再进行下一步操作,主要用于开发系统
  • 解释型:边编码边运行,用于网页开发等

IDEA

IDE:集成开发环境IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器编译器调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。

IDEA下载:

  1. 打开官网
  2. 找到IntelliJIDEA
  3. 安装社区版(学生可以自己注册教育邮箱白嫖IDEA旗舰版)

免费注册使用步骤教程

安装注意事项

进入IDEA后,调试习惯,我自学的时候是全部忽略按next

image-20201106074718323

进入这个界面后,按Next,再按Next,出现下面界面image-20201106074813967

此处为你创建文件的地方,建议放在自己好找的地方,一般不放C盘

那么下面我们以Hello World!为例编写一次代码吧

创建完毕后,找到左上方的[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AqBTNyg1-1604835904008)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20201106075126164.png)]

在src处右键找到New,点击Java class,就可以创建一个集成开发环境了

然后我们开始写代码

# 输入psvm(这是main方法的快捷键)
    再输入sout(又出现了system.out.println)
    最后只要在()内打"Hello World!"即可

注意点

  • 记住psvm与sout

Java基础语法

好看

注释 标识符 关键字

书写注释在大型代码里非常非常重要!

在日常要养成良好的书写习惯

  • 单行注释使用//,其作用是注释一行

  • 多行注释使用/* 文字*/,其作用是注释多行

  • 文档注释使用/** */,其作用暂时不清楚

关键字[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yFcHImxu-1604835904009)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20201106085032068.png)]

注意事项

  • 关键字不能被随意用来作为标识符,尽量不用
  • 标识符开头首字符只能用大小写字母,$,_,不能使用其他符号
  • 标识符开头后面的字符可以用用字母,$,_,数字表示
  • 标识符一般不使用中文或者拼音
  • 标识符是大小写敏感型!

例如

正确用法
    String sum=10
    String $decument=Hello,World!
错误用法
    String #sum=10
    String *sum=10

数据类型

  • 强类型语言:要求变量严格符号规定,所有变量都必须先定义后使用,例如JAVA
  • 弱类型语言:符号规定并没有那么严格,例如JAVAME

JAVA数据类型分为一下两个类

  • 基本类型
  • 引用类型

如下图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IUsvssWW-1604835904009)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20201106215200205.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q6JtAkmB-1604835904010)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20201106215246658.png)]

public class Demo1 {
    public static void main(String[] args) {
        //八大基本数据类型

        //整数
        
        int sum=10;
        byte num=10;
        short sum1=30;
        long num4=30L;   //long类型要在数字后面加个L

        //小数:浮点数
        float sum5=20.1F;   //float类型要在数字后面加一个F
        double sum6=3.1415926;

        //字符
        char name='A';
        char name1='叶';
        //字符串,String不是关键字,类

        //布尔值只要是非 true false
        boolean flag= true;
        }
    }

以上为部分基本类型知识点

什么是字节

  • 位(bit):指计算机内最小的储存单位,是一个八位二进制数
  • 字节(byte):是计算机中数据处理的基本单位,习惯用B表示
  • 1B=8bit
  • 字符:指计算机中使用的字母 数字 字和符号等

如何创建一个新的project

  1. 找到File>new>project[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-znxlQNky-1604835904010)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20201107142653106.png)]

  2. 找到最下面的Empty project,点击Next

  3. 更改你想要的project name

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D5X5LkGx-1604835904011)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20201107142939096.png)]

(若出现上面的标志,则自己选择,如果按this window,就会把你当前的项目挤掉,如果按new window,则会出现一个新的项目框)

  1. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Da0kpsZJ-1604835904011)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20201107143136554.png)]

    最后把项目更改成我这个格式,注意SDK不能是红色的,要改成自己的1.8,然后版本改成8即可

数据类型扩展

转义字符类型如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ad7FJyjw-1604835904012)(C:\Users\lenovo\Desktop\QQ图片20201107170425.jpg)]

public class Demo2 {
    public static void main(String[] args) {
        //整数扩展;     进制      二进制0b       十进制     八进制0     十六进制0x

        int i = 10;
        int i2 = 010;//八进制0
        int i3 = 0x10;//十六进制0x    0~9 A~F 16

        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("=========================");


        //浮点数扩展     银行业务表示钱如何做?
        //BigDecimal    使用数学工具类

        //float     有限  离散      接近但不等于
        //最好不要使用浮点数进行比较
        //如果要就只使用浮点数进行比较
        //如果要比较的话,一般用bigdecimal
        float f = 0.1f; //0.1
        double d = 1.0 / 10;//0.1
        System.out.println(f == d);//false

        float d1 = 12143213465676465421f;
        float d2 = d1 + 1;

        System.out.println(d1 == d2);//ture
        System.out.println("=========================");

        char c1 = 'b';
        char c2 = '时';

        System.out.println(c1);


        System.out.println((int) c1);//强制转换


        System.out.println(c2);


        System.out.println((int) c2);

        //所有的字符本质还是数字
        System.out.println("=========================");

        char c3 = '\u0065';


        System.out.println(c3);

        //转义字符
        //\t 制表符
        //...

        String sa = new String("hello world");
        String sb = new String("hello world");
        System.out.println(sa == sb);


        String sc = "hello world";
        String sd = "hello world";
        System.out.println(sc == sd);
        //对象  从内存分析

        //布尔值扩展
        boolean flag = true;
        if (flag == true) { };//新手
        if (flag) { };//老手
        //Less is more
        }
    }

类型转换

  1. Java是强类型语言
  2. 低到高

​ byte,short,char<int<long<float<double

  1. 运算中,不同类型要先转换为同一类型再进行计算

可能出现的类型转换问题以及部分提醒点

public class Demo3 {
    public static void main(String[] args) {
        int i = 129;
        byte b = (byte)i;//内容溢出

        System.out.println(i);
        System.out.println(b);


        //强制转换是由高到低(类型)变量名  高到低!!


        //自动类型转换是由低到高  不需要任何的其他代码 直接由低到高!!

        /*
        注意点:
        1. 不能对布尔值转换(即ture与false不能转换为数字)
        2. 不能把对象类型转换为不相干的类型
        3. 在高容量转换为低容量的时候,强制转换
        4. 转换的时候可能会出现内存溢出(即出现乱码),或者精度问题(例如小数点会被抛弃)
         */

        System.out.println("=====================");
        System.out.println((int)23.7);//23
        System.out.println((int)-47.24f);//-47


        System.out.println("=====================");
        char c = 's';
        int d = c +2;
        System.out.println(d);
        System.out.println((char)d);


        System.out.println("=====================");

        //操作比较大的数的时候,注意溢出
        int money = 10_0000_0000;
        int years = 20;
        int total = money*years;//-1474836480 计算时已经溢出
        System.out.println(total);//先把一个数转换为long

        long total2 = money*years;//-1474836480 计算时之前已经出问题,即先算money*years再变化成long类型
        long total3 = money*(long)years;//先把一个数转换为long,这样就直接进行long类型的运算


        System.out.println(total2);
        System.out.println(total3);

        //注意L与l,容易把l看出1,一般用L代替l 即l类型
        long total4=10L;
        System.out.println(total4);


    }

变量

  • Java是一种强类型语言,每个变量必须声明其类型
  • Java变量是程序中最基本的存储单位,其要素包括变量名,变量类型,作用域
  1. 变量名:name run salary…
  2. 变量类型:long double int…
  3. 作用域:

注意:

  1. 每个变量都要由类型,类型可以是基本类型叶可以是引用类型
  2. 变量名必须是合法的标识符
  3. 变量声明是一条完整的语句,因此每一个声明必须以分号结束;

变量的作用域

类变量

实例变量:在类的里面(Demo4)在方法的外面(main) 是从属于对象

局部变量:在方法里面即在main{}里起作用 在{}外不起作用

public class Demo4 {



    //main方法 但方法不止一种 例如 add
    //实例变量在类的里面(Demo4)在方法的外面(main)  是从属于对象
    //实例变量比较高级,定义就可以使用
    /*实例变量不自行初始化,那么变量会变成默认值
      例如int的默认值就是0
      double的默认值就是0.0(因为带有小数)
      布尔值是false  非基本类型 其他的默认值都是null
      */

    String name = "salary";
    int age;
    static double salary = 100000;

    static final double PI = 3.14;


    public static void main(String[] args) {

        //局部变量在{}内使用,在{}外使用没有意义 且局部变量必须声明和初始化值
        //不建议用int a=1 b=2 c=3;这样的方法写,尽量写成三行
        int a = 1;
        int b = 1;
        int c = 1;
        String name="愜宁";
        char x = 'x';
        double pi = 3.14;

        //变量类型 变量名字 =new demo08()
        Demo4 demo4 = new Demo4();
        System.out.println(demo4.age);
        System.out.println(demo4.name);
        System.out.println(salary);


        System.out.println("=======================");

        //常量用final定义 常量名=值
        //final double PI = 3.14
        //常量名一般使用大写字符!!以及修饰符没有先后顺序

        System.out.println(PI);

    }
}
变量命名规范
  • 常量名一般使用大写字符!!
  • 以及修饰符没有先后顺序
  • 所有的方法,方法名,类名,要见名知意
  • 类成员变量:首字母小写,驼峰原则(即第二个单词开始首字母大写例如someBoy)
  • 局部变量:首字母小写,驼峰原则
  • 常量:大写,不同单词中间要用下划线分割
  • 类名:首字母大写和驼峰原则,即Dome
  • 方法名:首字母小写和驼峰原则:main() run()
  • 重点是让代码便于阅读

运算符

Java语言支持如下运算符

  • 算术运算符:+ ,- ,* ,/ ,% ,++, –

++ --:b=a++是指b=a然后再有a+1 c=++a是指a+1再有c=a

  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!=(!就是否的意思!=就是不等于)
  • 逻辑运算符:&&,||,!(与 或 非)
  • 位运算符:& ,|,^ ,~ ,>> ,<<,>>>
  • 条件运算符:?:
  • 扩展赋值运算符:+=,-=,*=,/=

Java的scanner

定义

package scanner.base;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        //等待数据的接收,书写方法:new S +Alt+Enter
        Scanner scanner = new Scanner(System.in);
        


        //数据的存储
        String str = scanner.nextLine();

        System.out.println("输出的内容为:"+str);

        //结束该接收
        scanner.close();
    }
}

注意

  1. scanner.后面有两种输入

    一种是next,一种是nextLine。
    区别如下
    next不换行,nextLine会换行

题目

输入多个数字,求其总和和平均数,通过输入非数字来结束输入并输出执行结果

package scanner.base;

import java.util.Scanner;

public class Dome03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        double sum=0;
        int m =0;

        while (scanner.hasNextDouble()){
            //通过循环来判断是否还有输入,并在里面进行求和和统计
            
            double x = scanner.nextDouble();

            m++;
            sum=sum+x;

        }
        System.out.println("平均数为:"+(sum/m));
        System.out.println("个数的和为"+sum );
        scanner.close();

    }
}

if语句

与c语言一样

注意

swtch结构结束时要加入break

while循环

定义与c语言是一样的,用法也没有什么区别

for循环

注意:可以写成100.for 表达的含义是

for(i=0;i<=100;i++)

增强for循环

int[] numbers = {1,2,3,4,5}

for(int x:numbers){
    sout (x)
}

定义为for(int x: 数组名){}

含义为:将数组里的数以int类型一个一个的排列出来

break&continue

相同点:都是对某次循环进行判断,符合条件则停止此次循环

不同点:break是停止这一整个的循环

​ continue是停止此次循环,并且马上到循环开头,不会继续下去

方法

方法的定义

//写方法
public static int add(int a,int b){
    return a+b;
}

注意:

  1. public和static是一定要写的 然后就类似于c语言中的函数的写法
  2. 这里的第一个int指return返回的值的类型

与c的区别:

  1. 写了static就可以直接引用不用再在开头写函数名称

方法的重载

方法的名字可以相同,但参数列表必须不同

参数列表:指参数的类型,或者数目

例如

public static int max(double num1,double num2){...}
public static int max(int num1,int num2){...}

可变参数

定义:在指定参数类型后加一个省略号(…)

例如

public static void printMax(double...numbers){}
public static void printMax(double a,double...numbers){}
//不合法
public static void printMax(double...numbers,double a){}

**注意:**一个方法只能指定一个可变参数,必须是方法的最后一个参数。任何普通的参数必须是可变参数前声明

递归

举例

如何求阶乘?

public static int f(int a)
 {
 	if(a==1)
	{
 		return a=1;
	}
	else{
		return a=a*f(a-1);
	}
 }

定义

递归头:什么时候结束(例如上式的f(1))

递归体:如何递归?(a=a*f(a-1))

优点:简化思考

缺点:过多的f(x)会导致占用的内存太多,最后会崩坏

数组

定义

int[] nums;		//声明一个数组
nums = new int[10];		//创建一个数组
//给数组元素赋值
for(i=0;i<10;i++)
	{Scanner scanner = new Scanner(System.in);
	int[i]= scanner.nextInt();
    scanner.close();
    }
	
	
//或者写成
int[] num2 = new int[10];

获取数组长度

c = nums.length

初始化方式

  1. 静态初始化

    //创建+赋值
    int[] = {1,2,3,4};
    
  2. 动态初始化

    int[] b = new int[10];
    b[0] = 10;
    
    

    数组边界

    数组下标越界异常

    ArraylndexOutOfBoundsException

Tip

  1. 数组也是对象,数组元素相当于对象的成员变量

数组的使用

public static int[] reverse(int[] b) {
        int[] result = new int[b.length];
        for (int i = 0 ,j=result.length-1; i < b.length; i++,j--) {
            result[j] = b[i];
            
        }
        return result;
    }

Arrays类讲解

Arrays是一种类方法,我们可以到jdk的帮助文档里查找我们想要的方法

一些比较简单有用的方法

//大学数组元素
Arrays.toString();
//数组进行升序
    Arrays.sort();
//数组的填充
	Arrays.fill(a,val:x)
//x的含义为填充的数据 a是指填充的数组

对象

什么是面向对象?

本质:以类的方式组织代码,以对象的组织(封装)数据

三大特性

  • 封装 理解:
  • 继承 理解:
  • 多态 理解:

回顾方法及加深

定义:

  1. 修饰符
  2. 返回类型
  3. break&return
  4. 方法名:驼峰原则以及见名知意
  5. 参数列表:(参数类型,参数名)

调用:

  1. 静态方法:在public 后面加了static 调用方式:类名+方法名

    用途:在其他代码中引用某个方法 ,通过类名.方法名直接引用就可以了

  2. 非静态方法 调用方式 new一个新的类 再进行静态方法的调用

    用途:在其他代码中引用某个方法,通过实例化这个类来实现

    对象类型 对象名 = 对象值

    区别:静态方法是和类一起加载的

    ​ 非静态方法是类实例化之后才存在的

  3. 形参&实参

    **注意点:**形参和实参的值类型一定要相同

  4. 值传递与引用传递

    之后要重点理解


PS:好像很久没更新了,其实是有在学的,只是不常玩博客园,然后今天突然想到就更新了一波,欢迎大家和我交流
最近看到的一张好图///A///在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值