Java的学习笔记(02)基础

简介: 访问修改函数static:它用于使成员(块、方法、变量或嵌套类)可以独立于任何其他成员使用,而无需参考特定情况。strictfp:用于限制、浮点、浮点运算和计算,并在浮点变量中执行任务时保证每个阶段的结果相同。synchronized:它用于在Java中获得适用于块和方法的同步。transient:作为序列化的一部分使用的因子修饰符。在序列化的季节,如果我们不想对记录中的特定变量进行多余的估计,那么此时,我们使用transient关键字。volatile:如果修饰符告诉编译器,由不稳定变量调整的变量通过程序的不同部分发生惊人的变化,则使用volatile。Java关键字的

Java基础01:注释(书写注释是一个非常好的习惯)

单行注释 //

//输出一个Hello world

多行注释 / /

/* 
    多行注释多行所行
 */

文档注释

/**
*java doc
*java doc
*java doc
*/

Java基础02:标识型和关键字

重要Java关键字列表

abstract:它利用计算机来完成抽象。它是与类和方法相关的非访问修饰符。

enum:它利用Java描述enum。

instanceof:它用于知道对象是否是预定义写入(类、子类或接口)的情况。

private:它是一个访问修饰符。任何被宣布为私有的东西都不能在其类外看到。

protected:如果您需要使组件能够在当前类之外查看,那么,只需对特定于您的类的子类进行查看,此时将宣布该组件。

public: 任何人从任何地方都可以到达的地方。

访问修改函数

static:它用于使成员(块、方法、变量或嵌套类)可以独立于任何其他成员使用,而无需参考特定情况。

strictfp:用于限制、浮点、浮点运算和计算,并在浮点变量中执行任务时保证每个阶段的结果相同。

synchronized:它用于在Java中获得适用于块和方法的同步。

transient:作为序列化的一部分使用的因子修饰符。在序列化的季节,如果我们不想对记录中的特定变量进行多余的估计,那么此时,我们使用transient关键字。

volatile:如果修饰符告诉编译器,由不稳定变量调整的变量通过程序的不同部分发生惊人的变化,则使用volatile。

Java关键字的类型

Enum

Enum有效地表示编程语言中命名常量的集合。例如,一副扑克牌中的四套西服可能有四个名为Club、Diamond、Heart和Spade的统计员,其中一个位置有一个名为西服的已识别类别。不同的插图结合了正常识别的构图(如行星、一周中的几天、色调、方位等)。

当我们在编译时知道每一个可能的值时,JavaEnum就可以利用它。例如,这可能包括菜单上的决策、调整模式、召唤线横幅等。枚举写入中常量的排列永远保持不变并不重要。

Strictfp关键字

strictfp是Java中的一个关键字,它利用限制浮点值,并在执行滑行点变量中的任务时保证每个阶段的结果相同。

浮点计算从属于平台,即当类文档在各种平台(16/32/64位处理器)上运行时,不同的输出(浮点变量)完成。为了解决这类问题,根据IEEE754滑行点计数指南,以JDK1.2的形式提出了strictfp口号。

Strictfp的重要关注点:

Strictfp修饰符按原样使用类、接口和技术。

Strictfp无法使用独特的策略。尽管如此,它还是利用了理论类/接口。

由于接口的技术当然是动态的,strictfp不能与接口内的任何方法一起使用。

标识符注意点

  1. 所有标识符都应该以字母,或者美元符号($)或者下划线(_)开始
  2. 不能使用关键字作为变量名或者方法名
  3. 大小写非常敏感
  4. 不能以数字或者其他符号开头
  5. 可以使用中文名和拼音,但是不建议使用,不方便后期维护

Java基础03:数据型和关键字

基本数据类型

整数类型

byte 占1个字节(8位)

short 占2个字节(16位)

int 占4个字节(32位)

long 占8个字节(64位)

浮点数类型

float 4字节

double 8字节

字符类型

char 2字节

Boolean类型

1位:true false

public class demo02 {
    public static void main(String[] args) {
        int num1 = 10;
        int num2 = 20;
        int num3 = 40;
        long num4 = 100L;   //Long 类型要在数字后加个L
        //小数:浮点数
        float num5 = 50.1F;    //float 类型要在数字后加个F
        //字符
        char name = 'A';
        char name3 = '张';
        //字符串
        String name2 = "张三";
        //布尔类型
        boolean flag = true;
    }
}

Java基础04 数据类型扩展及面试题

最好完全避免使用浮点数进行比较!!!!!!!!

public class demo03 {
    public static void main(String[] args) {
        //整数拓展  进制   二进制0b    十进制    八进制0    十六进制0x
        int i = 10;
        int i2 = 010;
        int i3 = 0x10;
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        //===================================================================
        //浮点数拓展
        //===================================================================
        //float: 有限  离散  舍入误差 大约  接近但不等于
        //double
        //最好完全避免使用浮点数进行比较
        float f = 0.1f;
        double d = 0.1;
        System.out.println(f==d);   //判断是否相等 :false
        System.out.println(f);
        System.out.println(d);
        //字符
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println((int) c1);    //强制转换,将a转化为数字
        System.out.println(c2);
        System.out.println((int) c2);    //强制转换
        // 所有字符本本质还是数字
        //转义字符
        //   \t  制表符
        //   \n  换行
    }
}

Java基础05 类型转换

运算中,不同类型的数据先转换为同一类型,然后进行运算。

从低到高位数据类型:byte 、short、char—>int—>long—>float—>double

public class demo05 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte) i;   //强制转换
        System.out.println(i);
        System.out.println(b); //溢出
    }
}

强制转换 (类型)变量名 高—>低位

自动转化 低—>高位

注意点:

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不想干的类型
  3. 在把高容量转换到低容量的时候,强制转换
  4. 转换的是时候可能存在内存溢出,或者精度问题!!!!!!!!
public class demo05 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte) i;   //强制转换
        System.out.println(i);
        System.out.println(b); //溢出
        System.out.println((int)23.7);    //double类型 23
        System.out.println((int)-45.89f);   //浮点数类型 -45
        char c = 'a';
        int d = c+1;
        System.out.println(d);    //98
        System.out.println((char) d);   //b
    }
}
public class demo06 {
    public static void main(String[] args) {
        // 操作比较大的数字的时候,注意溢出的问题
        // JDK7 新特性,数字之间可以用下划线分割
        int money = 10_0000_0000L;  //Long 类型要在数字后加个L
        int years = 20;
        int total = money*years;  //-1474836480 ,计算的时候已经溢出了
        long total2 =money*years; //默认是int类型,转换之前就已经存在问题了
        long total3 = money*((long)years);   //需要把years转换为long类型
        System.out.println(total3);
    }
}

Java基础06:变量、常量、作用域

类变量

实例变量

局部变量

public class demo08 {
    // 实例变量,从属于对象;如果不进行初始化,这个类型的默认值  0 0.0
    // 布尔值默认为false
    //除了基本类型,其余的类型默认值为null
    String name;
    int age;
    //类变量
    static double salary = 2500;
    //main方法
    public static void main(String[] args) {
        //局部变量;使用前必须声明和初始化值
        int i = 10;
        System.out.println(i);
        //变量类型   变量名字= new demo08();
        demo08 demo08 = new demo08();
        System.out.println(demo08.age);   //  0
        System.out.println(demo08.name);     //  null
        //类变量
        System.out.println(salary);
    }
    //其他方法
    public void add(){
    }
}

常量:设置之后不可再更改

常量修饰符: final

public class demo09 {
    //常量修饰符:  final
    //修饰符,不存在先后顺序
    static final double PI = 3.1415926;
    public static void main(String[] args) {
        System.out.println(PI);
    }
}

命名规范

  1. 见名知意
  2. 类成员变量: 首字母小写和驼峰原则:monthSalary 除了第一个单词意外后面单词首字母大写。
  3. 局部变量:首字母小写和驼峰原则
  4. 常量:大写字母和下划线 MAX_VALUE
  5. 类名:首字母大写和驼峰原则:Man,GoogMan
  6. 方法名:首字母大写和驼峰原则:run(),runRun()

Java基础07运算符

算术运算符 +、-、*、/、%、++、--

赋值运算符 =

关系运算符 >、<、>=、<=、==、!=、instanceof

逻辑运算符 && || ! (与或非)

位运算符

条件运算符

拓展运算符

package operator;
public class demo1 {
    public static void main(String[] args) {
        //2元运算符号
        //CTRL + D  复制当前行到下一行
        int a = 10;
        int b = 20;
        int c = 30;
        int d = 40;
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);   //可能产生小数,强转成double
    }
}
package operator;
public class Demo02 {
    public static void main(String[] args) {
        long a = 12345678946545L;
        int b = 123;
        short c = 10;
        byte d = 8;
        System.out.println(a+b+c+d);   //long
        System.out.println(b+c+d);    //int
        System.out.println(c+d);     //int   没有long类型,数据类型自动转为int类型,除非强转成double
    }
}
package operator;
public class Demo03 {
    public static void main(String[] args) {
        //关系运算符号
        int a = 10;
        int b = 20;
        int c = 21;
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);
        System.out.println(c%a);    //取余运算,模运算
    }
}

Java基础08 自增自减运算符、初识math类

package operator;
public class Demo04 {
    public static void main(String[] args) {
        // ++  --  自增、自减运算符
        int a = 3;
        int b = a++;     //  a = a +1     先赋值,再自增
        System.out.println(a);   //   a = 4;
        int c = ++a;     // ++a  a = a + 1;     先自增,再赋值
        System.out.println(a);
        System.out.println(a);
        System.out.println(b);
        System.out.println(b);
        System.out.println(c);
        System.out.println(c);
        //幂运算    2^3  2*2*2 = 8
        double pow = Math.pow(2,3);
        System.out.println(pow);
    }
}

Java基础09 逻辑运算符、位运算符

package operator;
public class Demo05 {
    public static void main(String[] args) {
        // 逻辑运算符  &&  ||  !
        boolean a = true;
        boolean b = false;
        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);   //  c<4 为false ,不运行c++ ,结果最后还是c = 5;
        System.out.println(c);
        System.out.println(d);
    }
}
package operator;
public class Demo06 {
    public static void main(String[] args) {
        /*
        * 位运算
        * A  =  0011 1100
        * B  =  0000 1101
        *
        * A&B = 0000 1100
        * A|B = 0011 1101
        * A^B = 0011 0001  //异或 相同取0,不同取1
        * ~B  = 1111 0010  //取反
        *
        * 2*8 = 16 2*2*2*2
        * <<   *2       //  左移:  2倍
        * >>   /2       //  右移除: 除以2  
        *
        *
        * 0000 0000      0
        * 0000 0001      1
        * 0000 0010      2
        * 0000 0011      3
        * 0000 0100      4
        * 0000 1000      8
        * 0001 0000      16
        *
        *
        * */
        System.out.println(2<<3);
    }
}

Java基础10 三元运算符及小结

package operator;
public class Domo07 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        a+=b;  // a=a+b
        a-=b;  // a=a-b
        System.out.println(a);
        //字符串连接符  +  ,string
        System.out.println(""+a+b);     // 1020     其中的“+”是字符串连接符
        System.out.println(a+b+"");     // 30   其中a与b之间的“+”是运算符,b后面的的“+”是字符串连接符
    }
}
package operator;
public class Demo08 {
    public static void main(String[] args) {
        //三元运算符
        // x ? y :z
        //如果 x==true ,则结果为y,否者为z
        int score = 80;
        String Type2 = score < 60 ? "不及格":"及格";
        System.out.println(Type2);
    }
}

Java基础11 包机制

包的本质就是一个文件夹()

一般利用公司域名倒置作为包名:com.luomoe.base

package com.baidu.base;     //包
import com.baidu.base.demo03;   //引入
import com.baidu.base.*;   //引入 包内所有的类

Java基础12 JavaDoc生成文档

  1. javadoc 命令是用来生成自己的API文档 /** 然后回车
/**
 * @author zhangshan
 * @version 1.0
 * @since 1.8
 *
 *
 */

cmd命令(生成web文档)

javadoc -encoding UTF-8 -charset UTF-8 Doc.java

  1. 使用IEDA生成javadoc文档
    (1)打开 idea,点击 Tools–> Generate JavaDoc,会弹出生成JavaDoc文档的配置页面。
    (2)进行参数配置
    (3)在输出目录里生成JavaDoc。
相关文章
|
4月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
2月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
88 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
28天前
|
Java 数据库连接 API
Spring 框架的介绍(Java EE 学习笔记02)
Spring是一个由Rod Johnson开发的轻量级Java SE/EE一站式开源框架,旨在解决Java EE应用中的多种问题。它采用非侵入式设计,通过IoC和AOP技术简化了Java应用的开发流程,降低了组件间的耦合度,支持事务管理和多种框架的无缝集成,极大提升了开发效率和代码质量。Spring 5引入了响应式编程等新特性,进一步增强了框架的功能性和灵活性。
43 0
|
3月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
3月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
从Java环境的搭建到实际代码的编写,从基本用法的讲解到底层原理的剖析,深度解析Java基础知识。本文是《Java学习路线》专栏的起始文章,旨在提供一套完整的Java学习路线,覆盖Java基础知识、数据库、SSM/SpringBoot等框架、Redis/MQ等中间件、设计模式、架构设计、性能调优、源码解读、核心面试题等全面的知识点,并在未来不断更新和完善,帮助Java从业者在更短的时间内成长为高级开发。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
|
3月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
2月前
|
Java 数据安全/隐私保护
java学习笔记(基础习题)
java学习笔记(基础习题)
44 0
|
2月前
|
Java 程序员 开发工具
java学习笔记
java学习笔记
41 0
|
3月前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
本文是“Java学习路线”中Java基础知识的高级篇,主要对多线程和反射进行了深入浅出的介绍,在多线程部分,详细介绍了线程的概念、生命周期、多线程的线程安全、线程通信、线程同步,并对synchronized和Lock锁;反射部分对反射的特性、功能、优缺点、适用场景等进行了介绍。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
|
4月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
61 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)