Java学习笔记

Posted nufe_wwt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习笔记相关的知识,希望对你有一定的参考价值。

Java学习笔记

前言&预科

卸载JDK

  1. 删除Java的安装路径(在环境变量里可以找到)
  2. 删除环境变量中的JAVA_HOME
  3. 删除path下关于JAVA_HOME的目录
  4. cmd java -version检查是否删除完成

安装JDK

  1. 百度搜索JDK8,找到下载地址
  2. 同意协议
  3. 下载电脑对应的版本
  4. 双击安装JDK
  5. 记住安装的路径
  6. 配置环境变量
    1. 我的电脑–右键–属性
    2. 环境变量–JAVA_HOME(新建)
    3. 配置path变量(%JAVA_HOME%\\bin %JAVA_HOME%\\jre\\bin )
  7. 测试JDK是否安装成功

需要在终端运行java文件时

  1. 需要先cd到java文件的目录
  2. 用命令javac 文件名.java编译出一个.class文件
  3. 再用命令java 文件名 运行
public class Hello
    public static void main(String[] args)
        System.out.print("Hello World!");
    

Java基础

1、注释、标识符、关键字

注释

注释分为单行注释、多行注释以及文档注释3种

单行注释以 //开头

多行注释以/*开头,*/结尾

文档注释以/**开头,*/结尾

public class HelloWorld 
    public static void main(String[] args) 
        //单行注释 输出一个 Hello World!
        System.out.println("Hello World!");
        //多行注释:可以注释一段文字  /* 注释 */
        
        /*
        我是多行注释
        我是多行注释
        我是多行注释
        */
        
        //JavaDoc:文档注释   /** */
        /**
         * @Description HelloWorld
         * @Anthor 
         * 
         */
      
/**
 *                 .-~~~~~~~~~-._       _.-~~~~~~~~~-.
 *             __.'              ~.   .~              `.__
 *           .'//                  \\./                  \\\\`.
 *         .'//                     |                     \\\\`.
 *       .'// .-~"""""""~~~~-._     |     _,-~~~~"""""""~-. \\\\`.
 *     .'//.-"                 `-.  |  .-'                 "-.\\\\`.
 *   .'//______.============-..   \\ | /   ..-============.______\\\\`.
 * .'______________________________\\|/______________________________`.
 *
 */
    

关键字

Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

标识符可以是中文,但是不建议这样使用

String 王者荣耀 = "荣耀王者";

2、数据类型

基本数据类型(Primitive Type)

  • 数值类型
    • 整数类型
      • byte占1个字节范围:-128-127
      • short占2个字节范围:-32768-32767
      • int占4个字节范围:-2147483648-2147483647
      • long占8个字节范围:-9223372036854775808-9223372036854775807
    • 浮点类型
      • float占4个字节
      • double占8个字节
    • 字符类型char占2个字节
  • boolean类型:占1位,其值只有true和false两个
        //八大基本数据类型:

        //整数
        int num1 = 2147483647; //最常用
        short num2 = 32767;
        byte num3 = 127;
        long num4 = 922L;

        //小数:浮点数
        float num5 = 5.20F;
        double num6 = 3.141592653589793238462643;

        //字符
        char name1 = 'A';
        //字符串,String不是关键字,是类
        String name2 = "www";

        //布尔值:是 非
        boolean flag = true;
//        boolean flag = true;

//最好完全避免使用浮点数比较大小
//最好完全避免使用浮点数比较大小
//最好完全避免使用浮点数比较大小

//整数拓展:   进制   二进制0b  十进制  八进制0  十六进制0x
int i = 10;
int i2 = 010; //八进制0
int i3 = 0x10; //十六进制0x  0~9 A~F

引用数据类型(Reference Type)

类Class、接口Interface、数组Array,除了八大基本类型,其他的都是引用数据类型。

3、类型转换

优先级:

  • 低 ------------------------------------------->高
  • byte,short,char -> int -> long -> float -> double
/*
* 低 ------------------------------------------->高
* byte,short,char -> int -> long -> float -> double
* */
int i = 128;
byte b = (byte)i; //内存溢出
double d = i; //这里是自动转换

//强制转换   (类型)变量名  高-->低
//自动转换   低-->高

/*
注意点:
        1、不能对布尔值进行转换
        2、不能把对象类型转换为不相干的类型
        3、在把高容量转换到低容量的时候,进行强制类型转换
        4、转换的时候可能存在内存溢出,或者精度问题!
*/

//操作比较大的数的时候,注意溢出问题

//JDK7新特性,数字之间可以用下划线分隔
int money = 10_0000_0000;

4、变量、常量

局部变量:使用之前必须声明和初始化

实例变量:从属于对象(类);如果不进行初始化,这个类型的默认值 0 0.0
布尔值默认false
除了基本类型,其余的默认值都是null

类变量 static便于调用

public class Demo07 

    //类变量 static
    static double salary = 2500;


    //属性:变量

    //实例变量:从属于对象(类);如果不进行初始化,这个类型的默认值 0 0.0
    //布尔值默认false
    //除了基本类型,其余的默认值都是null
    String name;
    int age;

    //main方法
    public static void main(String[] args) 

        //局部变量;使用之前必须声明和初始化
        int i = 10;
        System.out.println(i);

        //变量类型 变量名字 = new Demo08();
        Demo07 demo07 = new Demo07();
        System.out.println(demo07.age);
        System.out.println(demo07.name);

        //类变量
        System.out.println(salary);
    

    //其他方法
    public void add()

    



public class Demo08 

    //修饰符,不存在先后顺序
    final static double PI = 3.14; //常量用 final 定义 所有字母大写
//    static final double PI = 3.14;

    public static void main(String[] args) 
        System.out.println(PI);
    

类名:首字母大写和驼峰原则

常量:所有字母大写,单词之间加_下划线

其他:首字母小写和驼峰原则

5、运算符

整数加减时,有long类型的话结果为long类型;
// 没有long类型的话结果为int类型;
关系运算符返回结果: 正确 , 错误  布尔值
  
// ++ -- 自增 自减   一元运算符
int a = 3;
int b = a++; //执行这行代码后,先给b赋值,a再自增
//a++  a = a + 1;
System.out.println(a);
//++a  a = a + 1;
int c = ++a; //执行这行代码前,a先自增,再给b赋值

System.out.println("a && b :" + (a&&b)); // 逻辑与运算:两个运算都为真,结果才为真
System.out.println("a || b :" + (a||b)); // 逻辑或运算:两个变量有一个为真,结果就为真
System.out.println("! ( a && b ) :" + !(a&&b)); // 如果是真,则变为假。如果是假就变为真

// 短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5

/*
A = 0011 1100
B = 0000 1101
-------------------------
A&b = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010

位运算
<< -> *2
>> -> /2
*/

int a = 10;
int b = 20;
// 字符串连接符  +  , String
System.out.println(a+b+" "); //30
System.out.println(" "+a+b); // 1020
// String类型在前面的话就不需要运算,全都看成字符串;
// String类型在后面的话,前面照常运算

//三元运算符
// x ? y : z
// 如果x为true,返回y;否则返回z

6、包机制、JavaDoc

一般利用公司域名倒置作为包名

ex. com.baidu.www

JavaDoc

@author 作者名
@version 版本
@since 指明需要最早使用的jdk版本
@param 参数名
@return 返回值情况
@throws 异常抛出情况
// 通过终端命令行生成文档 javadoc 参数 Java文件
// 编码问题 javadoc -encoding UTF-8 -charset UTF-8 Java文件
//学会使用IDEA生成JavaDoc文档
/*
Tools -> Generate JavaDoc... -> -encoding utf-8 -charset utf-8
 */

Java流程控制

1、用户交换Scanner

Java的Scanner还没这么理解,比如

if(scanner.hasNextInt())

这条语句中,.hasNextInt()方法的返回值是boolean类型,如果的返回的值是false。

Scanner每次调用都会有一次人机交互,也就是程序猿敲键盘进行‘I’操作,如果没有scanner.next()之类的语句的话,那之前进行的‘I’操作的内容无法被 ‘释放’ 掉,就会保存直至下一次调用Scanner。不知道这样你能不能看懂。

import java.util.Scanner;

public class Demo05 
    public static void main(String[] args) 
        // 我们可以输入多个数字,并求其总和平均值,
        // 每输入一个数字用回车确认,
        // 通过输入非数字来结束输入并输出执行结果

        // 和
        double sum = 0.0;
        // 计数
        int count = 0;

        System.out.println("请依次输入数字:");

        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextDouble())
            double x = scanner.nextDouble();
            count += 1;
            sum += x;
            System.out.println("你输入了第"+count+"个数据,当前总数结果为"+sum);
        

        System.out.println("总和平均值为" + sum/count);

        scanner.close();

    

2、顺序结构

基本结构,从前至后。

3、选择结构

if单选择结构

package struct;

import java.util.Scanner;

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

        System.out.println("请输入内容:");
        String s = scanner.nextLine();

        // .equals:判断字符串是否相等
        if (s.equals("hello"))
            System.out.println(s);

        

        System.out.println("End");

        scanner.close();
    

if双选择结构

import java.util.Scanner;

public class IfDemo02 
    public static void main(String[] args) 
        System.out.println("请输入成绩:");
        Scanner scanner = new Scanner(System.in);
        int i = scanner.nextInt();

        if(i>=60)
            System.out.println("及格");
        else 
            System.out.println("不及格");
        


        scanner.close();

    

if多选择结构

import java.util.Scanner;

public class IfDemo03 
    public static void main(String[] args) 
        System.out.println("请输入成绩:");
        Scanner scanner = new Scanner(System.in);
        int i = scanner.nextInt();

        if(i==100)
            System.out.println("恭喜满分!");

        else if (i>=85)
            System.out.println("优秀");

        else if (i>=60)
            System.out.println("及格");

        else 
            System.out.println("不及格");
        
        
        scanner.close();
    

嵌套的if结构

switch多选择结构

public class SwitchDemo01 
    public static void main(String[] args) 
        // scanner 无法读入 char 类型  思考怎么转变
        char grade = 'B';

        // case 具有穿透性,如果想只执行一个 case语句的话需要加入 break
        switch (grade)
            case 'A':
                System.out.println("优秀");
                break;
            case 'B':
                System.out.println("良好");
            case 'C':
                System.out.println("及格");
            case 'D':
                System.out.println("不及格");
        
    

4、循环结构

while循环

public class WhileDemo02 
    public static void main(String[] args) 
        // 计算 1+2+...+100
        int i = 0;
        int sum = 0;

        while(i<100)
            i++;
            sum += i;
        

        System.out.println(sum);
    

do…while循环

public class DoWhileDemo01 
    public static void main(String[] args) 
        int i = 0;
        int sum = 0;

        do
            i++;
            sum +=i;
         while (i<100);

        System.out.println(sum);

    

for循环

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

增强for循环

public class ForDemo04 
    // 增强for循环
    public static void main(String[] args) 
        int[] numbers = 10,20,30,40;

        for (int x:numbers)
            System.out.println(x);
        
    

5、break & continue

//continue语句用在循环语句中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,
//接着下一次是否执行循环的判断

public class ContinueDemo 
    public static void main(String[] args) 
        int i = 0;
        while(i<100)
            i++;

            if (i%10==0) 
                System.out.println();
                continue;
            
            
            System.out.print(i+"\\t");
        
        System.out.println("===");
    

//break在任何循环语句的主体部分,均可用break控制循环的流程
//break用于强行退出循环,不执行循环中的剩余语句。(break语句也可用在switch语句中)

public class BreakDemo 
    public static void main(String[] args) 
        int i = 0;
        while(i<100)
            System.out.println(i);
            i++;
            if(i==30)
                break;
        
        System.out.println("===");
    

6、练习

public class TestDemo01 
    public static void main(String[] args) 
        // 打印三角形
        for (int i = 1; i < 6; i++) 
            for (int j=5; j>i; j--)
                System.out.print(' ');
            for (int j=1; j<=i; j++)
                System.out.print('*');
            for (int j=1; j<i; j++)
                System.out.print(以上是关于Java学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

java复习预科知识-Markdown学习

预科总结以及JAVA基础的感受

JAVA基础学习预科部分 (Markdown + dox)2021/2/22持续更新中

scala学习笔记

零基础学习云计算及大数据DBA集群架构师预科2015年12月14日周一

零基础学习云计算及大数据DBA集群架构师预科2015年12月17日周四