Java基础知识01

IDEA使用

1. 常用快捷命令

  1. pstm
public static void main(String[] args) {
       
    }
  1. sout
System.out.println("Hello World!!");
  1. Ctrl+D:复制当前行到下一行

2. 建空工程过程

File -> New -> Module(模块)

​ Java -> Next -> 名字:xx -> Finish

出现src文件夹。

找项目结构方法:File -> Project Structure.

Java基础语法

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

  • 注释:不执行,相当于笔记。

    在java中有三种注释:单行注释、多行注释、文档注释。

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

    ​ 可以加参数

  • 标识符

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

    !!注意

    所有标识符都应以字母(AZ或az),美元符($)或下划线(_)开始。

    首字母之后,可以为字母、美元符、下划线或数字的任意字符组合。

    标识符是大小写敏感的(即,区分大小写)。

    不能用关键字作变量名或方法名。

    可以使用中文命名,但不建议。

  • 关键字

2. 数据类型

强类型语言:要求变量的使用要严格符合规定,所有变量必须先定义后才能使用。eg:Java,C语言,C++等。

弱类型语言:变量的使用可以不符合规定。eg:JS,VB等。

Java的数据类型分为两大类

(1)基本类型(primitive type)

java基本类型

八大基本数据类型:

​ 整数: int //最常用

​ byte

​ short

​ long //Long类型数字后加L

​ 浮点数:float //float类型数字后加F

​ double

​ 字符: char

​ //字符串,String表示关键字,是类

​ 布尔值: boolean //默认值:false

1). 整数拓展–各进制表示方法:

二进制0b 八进制0 十进制 十六进制0x

2). JDK7新特性:数字之间可用下划线分割。

eg:

int money = 10_0000_0000;
//且在输出时,下划线不会被输出。
3). 浮点数拓展–float与double的特性:
  • float、double:表示字长有限、离散、舍入误差、大约、接近但不等于

  • eg:

/* 1 */
float f = 0.1f;//0.1
double d = 1.0/10;//0.1

System.out.println(f==d);//false

/* 2 */
float d1 = 2323123213132313f;
float d2 = d1 + 1;

System.out.println(d1==d2);//true

结论:最好完全使用浮点数进行比较。

​ 使用BigDecimal(数学工具类)没有误差。

4). 字符扩展–Unicode编码表&转义字符:
①. Unicode编码表:
  • 使用Unicode编码表时,一个字符占两个字节(ASCII码中,一个字符占一个字节)。第一个字节上,都是0.
  • 使用Unicode编码的字符通过转义字符来表示。区间范围:U000 ~ UFFF( 16进制 ).
  • 以2进制储存,写16进制是为了方便看.
  • ( a = 97, A = 65 ) 最大可表示2^16 = 65536 ( 现在更多了 )
②. 转义字符:
字符含义
\n换行
\t制表符,相当于Tab.

(2)引用类型(reference type)

java引用类型

5). 默认值

除了基本类型,其余默认值都是null。

布尔值,默认是false。

3. 类型转换

Java是强类型语言,所以要进行某些运算时,需要用到类型转换。

运算中,不同数据类型的数据计算前须转化为同一数据类型。

注意点:

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

(1). 强制类型转换

高到低,需要强制转换

(2). 自动类型转换

低到高,系统自动转换

1). 转换优先级

低 ---------------------------------------------------------------> 高

byte, short, char -> int -> long -> float -> double

4. 变量、常量

(1). 变量

  • 变量:可以变化的量。

  • java是一种强类型语言,每个变量都必须声明其类型

  • java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域

    声明变量格式:

    type varName [=value] [{,varName[=value]}];
    //数据类型 变量名 = 值;可以使用逗号来声明多个同类型变量。
    //不建议一行声明多个变量
    

    注意事项:

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

1). 作用域

①. 类变量

写在类里的,须加关键字static.

即:静态变量、全局变量

②. 实例变量

在类里,方法外。没有关键字static.

声明的同时,可以不进行初始化。

从属于对象;如果不自行初始化,默认值为 0 0.0

③. 局部变量

写在方法里的.

public class Demo01{
    
    //实例变量,从属于对象。
    //声明过程
    String name;
    int age;
    
    //main方法
    public static void main(String[] args){
        //局部变量:必须声明且初始化值
        int i = 10;
        System.out.println(i);
    }
    
    //其它方法
    public void add(){
        
    }
}

2). 变量的命名规范

① 所有变量、方法、类名:

见名知意

② 类成员变量:

首字母小写和驼峰原则:eg.monthSalary(除第一个单词以外,后面的单词首字母大写)

③ 局部变量:

首字母小写,驼峰原则

④ 常量:

大写字母和下划线:MAX_VALUE

⑤ 类名:

首字母大写和驼峰原则:Man, GoodMan

⑥ 方法名:

首字母小写,驼峰原则:run(), runRun()

(2). 常量

初始化后不能再改变的值,不会变动的值。

final 常量名 =;
final double PI = 3.14;

常量名一般使用大写字符

public class Demo09{
    
    //final是修饰符,无先后顺序
    //final: 代表常量
    static final double PI = 3.14;
    
    public static void main(String[] args){
        System.out.println(PI);
    }
}

5. 运算符

(1). Java语言支持如下运算符:

1). 算数运算符:+, -, *, /, %(模运算,取余), ++, –

2). 赋值运算符:=

3). 关系运算符:>, <, >=, <=, ==, !=, instanceof

4). 逻辑运算符:&&(与), ||(或), !(非)

System.out.println("a&&b = " + (a&&b));//一假即假System.out.println("a||b = " + (a||b));//一真即真System.out.println("!(a&&b) = " + !(a&&b));

5). 位运算符:&, |, ^(异或), ~(取反), >>(右移), <<(左移), >>>

A = 0011 1100
B = 0000 1101

A&B = 0000 1100 一0即0
A|B = 0011 1101 一1即1
A^B = 0011 0001 相同为0,不同为1
~B = 1111 0010 取反

<<(左移):相当于*2 >>(右移):相当于/2

位运算,效率极高,速度快

6). 条件运算符:?

7). 扩展赋值运算符:+=, -=, *=, /=

(2). 优先级

6. 包机制、JavaDoc(文档注释)

(1). 包机制

1). 功能:

为了更好的组织类,Java提供了包机制,用于区分类名的命名空间

“包”的本质就是“文件夹”

2). 语法格式:

package pkg1[.pkg2[.pkg3...]];

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

eg:com.zhong.xxx

3). 使用包:

为了能使用某一个包的成员,我们需要在Java程序中明确导入该包。使用“import语句”可完成此功能

import package1[.package2...].(classname|*);

(2). JavaDoc

一种技术,可以将注释信息生成帮助文档。类似于java的API

1). 参数信息

@author 作者名

@version 版本号

@since 指明需要最早使用的jdk版本

@param 参数名

@return 返回值情况

@throws 异常抛出情况

package com.zhong.base;//该注释,加在类上/** * @author Zhong * @version 1.0 * @since 1.8 */public class Doc {    String name;    //给方法加属性    /**     *      * @param name     * @return     * @throws Exception     */    public String test(String name)throws Exception{        return name;    }}

2). 生成JavaDoc文档

①. 使用命令行
格式:

javadoc 参数 java文件

eg:
IDEA打开java程序位置

在目录栏最前面,输入CMD空格,回车打开cmd窗口

在cmd中输入:javadoc -encoding UTF-8 -charset UTF-8 Doc.java

​ 以上输入详解:java生成文档 -编码为 UTF-8 -字符集 UTF-8 类名

在源目录下生成了很多HTML文件,点击index.html可查看文档

②. 使用IDEA

步骤一:在IDEA里点击如下图所示位置

IDEA配置后生成javadoc文档01

步骤二:

IDEA配置后生成javadoc文档02

详解:

  1. 选择是整个项目还是模块还是单个文件
  2. 文档输出路径
  3. Locale选择地区,这个决定了文档的语言,中文就是zh_CN
  4. 传入JavaDoc的参数,一般这样写 -encoding UTF-8 -charset UTF-8 -windowtitle “文档HTML页面标签的标题” -link http://docs.Oracle.com/javase/7/docs/api

引用CSDN张鲜生博客,点击跳转

Java流程控制:

Scanner对象:

可通过Scanner类来获取用户的输入,用于实现人机交互

1. 基本语法:

Scanner s = new Scanner(System.in);

2. Scanner类的方法:

(1). next()与nextLine()方法:

获取输入字符串

区别:
①. next():

next()不能得到带有空格的字符串,以空格或回车作为结束

用的较少

②. nextLine():

Ⅰ. 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符

Ⅱ. 可以获得空白

用的较多

(2).hasNext()与hasNextLine():

在next()与nextLine()方法读取前,判断是否有输入数据

在代码中的使用:

package com.zhong.scanner;

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args){

        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        //创建了一个对象,通过System.in接收用户的输入。并把它封装成scanner对象,用于用户的扫描测试

        System.out.println("使用next方式进行接收");

        //判断用户有没有接收字符串
        if(scanner.hasNext() == true){
            //使用next方式进行接收
            String str = scanner.next();
            System.out.println("输出内容为:"+str);
        }

        //凡是属于IO流(即,输入输出)的类,如果不关闭会一直占用资源,用完要关掉
        scanner.close();
    }
}
package com.zhong.scanner;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args){
        //从键盘接收数据
        Scanner scanner = new Scanner(System.in);

        System.out.println("使用nextLine来接收");

        if(scanner.hasNextLine()){
            String str = scanner.nextLine();//判断是否还有数据

            System.out.println("输出结果为:"+str);
        }
        scanner.close();
    }
}

一、顺序结构

Java的基本结构是顺序结构,除非特别指明,否则按照顺序一句一句执行。最简单的算法结构

是任何一种算法都离不开的一种基本算法结构

二、 选择结构

1. if单选择结构

语法格式:

if(布尔表达式){
    //如果布尔表达式为true将执行的语句
}

2. if双选择结构

语法格式:

if(布尔表达式){
    //如果布尔表达式的值为true
}else{
    //如果布尔表达式的值为false
}

3. if多选择结构

语法格式:

if(布尔表达式 1){
    //如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
    //如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 2){
    //如果布尔表达式 3的值为true执行代码
}else{
    //如果以上布尔表达式都不为true执行代码
}

4. 嵌套的if结构

语法格式:

if(布尔表达式 1){
    //如果布尔表达式 1的值为true执行代码
    if(布尔表达式 2){
        //如果布尔表达式 2的值为true执行代码
    }
}

5. Switch多选择结构

switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支

case标签必为字符串常量或字面量

支持变量类型:

byte、short、int或char.从Java SE 7开始,支持字符串String类型

语法格式:

switch(expression){
    case value :
        //语句
        break;//可选
    case value :
        //语句
        break;//可选
        //你可以有任意数量的case语句
        default//可选
            //语句
}

switch穿透现象:

若没有break,则会输出符合要求的case及以下所有语句

反编译:

把.class文件(字节码文件,看不懂的)反编译成.java文件(看得懂的)

过程(使用IDEA):

点击IDEA02-IDEA项目结构02-IDEA项目结构02
02-打开文件路径02-找到.class文件02-打开.java文件夹
请添加图片描述
最后在IDEA中,双击即可查看。

请添加图片描述

三、循环结构

1. while循环

语法格式:

while(布尔表达式){
    //循环内容
}

2. do…while循环

语法格式:

do{
    //代码语句
}while(布尔表达式);

while与do while的区别:

while先判断后执行。

do-while先执行后判断。

do-while的循环体至少被执行一次

3. for循环

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构

for循环的执行次数,在执行前就已经确定

在Java5中引用了一种主要用于数组的增强型for循环

语法格式:
for(初始化;布尔表达式;更新){
    //代码语句
}
快捷输入:

在IDEA中,输入"100.for"自动生成for循环语句

for (int i = 0; i < 100; i++) {
            
        }
一些特点:

(1). 最先执行初始化步骤,可以声明一个或多个循环控制变量。也可为空语句

2种输出语句:

System.out.println();//输出会换行
System.out.print();//输出不会换行

4. 增强for循环

Java5引入了一种主要用于数组或集合的增强型for循环。(数组重点使用)

语法格式:

for(声明语句 : 表达式){
    //代码句子
}

四、break和continue

1. break:

break在任何循环语句的主体部分,均可用break控制循环流程。

用于强行退出循环,不执行循环中剩余的语句(也在switch中使用)。

2. continue:

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

狂神java笔记


版权声明:本文为mumu497原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。