为了项目方便管理,创建空项目

一、注释

  • 平时编写代码,在代码量比较少的时候,还可以看懂自己写的,但是当项目结构一复杂起来,我们就需要用到注释了
  • 注释并不会被执行,是给写代码的人看的
  • 书写注释是一个非常好的习惯
  • 平时写代码一定要注意规范

1.单行注释

2.多行注释

3.文档注释(JavaDoc)

  • JavaDoc命令是用来生成自己的API文档的

  • 参数信息

    • @author 作者名
    • @version 版本号
    • @since 指明需要最早使用的JDK版本
    • @param 参数名
    • @return 返回值情况
    • @throws 异常抛出情况
  • 查看生成的文档

javadoc -encoding UTF-8 -charset UTF-8 hello.java
/**
* 3.文档注释:JavaDoc,有功能,可以加一些参数
*
* @author lemon
* @create 2021-06-27 19:06
*/
public class Annotation {
public static void main(String[] args) {
//a.单行注释:只能注释一行文字
/*
2.多行注释:可以注释一段文字
*/
System.out.println("a.Annotation");
}
}

搜索“有趣的代码注释”

搜索“JDK帮助文档”

搜索“使用IDEA生成JavaDoc文档”

二、标识符和关键字

1.标识符注意点

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

  • 所有的标识符都应该以字母(A-Z或者a-z)、美元符($)、下划线(_)开始

  • 首字符之后可以是字母(A-Z或者a-z)、美元符($)、下划线(_)或数字的任何字符组合

  • 不能使用关键字作为变量名或方法名

  • 标识符是大小写敏感

    String Name = "张三";
    String name = "张三";
  • 合法标识符举例:

    String Aname = "张三";//大写字母
    String aname = "张三";//小写字母
    String $name = "张三";//$
    String _name = "张三";//_
    String name1 = "张三";//后面接任何字符
  • 非法标识符举例:

    //    String 1name = "张三";数字
    // String #name = "张三";符号
    // String *name = "张三";符号
    // String class = "张三";关键字
  • 可以使用中文命名,但一般不建议这样去使用,也不建议使用拼音

2.关键字

三、数据类型

1.强类型语言 和 弱类型语言

  • 强类型语言

    • 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用(好处:安全性高;缺点:速度慢)
  • 弱类型语言

public class StronglyTypeLanguageAndWeaklyTypeLanguage {
public static void main(String[] args) {
//变量i需要初始化
// int i;
int i = 10;
System.out.println(i); //10 //正确使用
String s = "hello";
System.out.println(s); //hello
}
}

2.Java的数据类型分为两大类

  • 基本类型(primitive type)
  • 引用类型(reference type)

public class DataElement {
public static void main(String[] args) {
//八大基本数据类型 //整数,可以在包装类里面看到范围
//Byte、Short、Integer、Long
byte b = 10;
short s = 20;
int i = 30; //最常用
long l = 30L; //long类型要在数字后面加个L //小数:浮点数
//Float、Double
float f = 40.1F; //float类型要在数字后面加个F
double d = 3.141592653589793238462643; //字符:一个字
char c = 'a'; //布尔值
//Boolean
boolean flag = true;
boolean flag2 = false; //字符串,String不是关键字,而是一个类
String name = "张三"; //整数拓展:进制 二进制(0b开头) 八进制(0开头) 十进制 十六进制(0x开头)
int i1 = 0b10; //二进制(0b开头):逢2进1
int i2 = 010; //八进制(0开头):逢8进1
int i3 = 10; //十进制:逢10进1
int i4 = 0x10; //十六进制(0x开头):逢16进1 0~9 A~F System.out.println(i1); //2
System.out.println(i2); //8
System.out.println(i3); //10
System.out.println(i4); //16
System.out.println(); //浮点数拓展:银行业务怎么表示?钱 BigDecimal 数学工具类
float f1 = 0.1f;
double d1 = 1.0 / 10;
System.out.println(f1); //0.1
System.out.println(d1); //0.1
System.out.println(f == d); //false float f2 = 123456789f;
float f3 = f2 + 1;
System.out.println(f2); //1.23456792E8
System.out.println(f3); //1.23456792E8
System.out.println(f2 == f3); //true
System.out.println();
//浮点数表示的字长是有限的,也是离散的,浮点数一般都会存在舍入误差(四舍五入),由于很多数字无法精确的表示,只能是大约数(接近但不等于) //最好完全避免使用浮点数进行比较!!! //字符拓展:所有的字符本质还是数字!!!
char c1 = 'a';
char c2 = '张';
System.out.println(c1); //a
System.out.println(c2); //张
//强制转换:可以把字符变成数字
System.out.println((int)c1); //97
System.out.println((int)c2); //24352
//Unicode编码:可以处理各种语言的文字,占2个字节,最多可以表示2^16 = 65536个字符
//Unicode编码表:(A = 65, a = 97),范围U0000~UFFFF
char c3 = '\u0061';
System.out.println(c3); //a
System.out.println(); //转义字符:
//\t:水平制表符
//\n:回车 //字符串扩展:对象 从内存分析
String s1 = new String("字符串");
String s2 = new String("字符串");
System.out.println(s1 == s2); //false String s3 = "字符串";
String s4 = "字符串";
System.out.println(s3 == s4); //true //布尔值扩展:判断条件是否为真
boolean flag1 = true;
if (flag1 == true){}
if (flag1){}
//代码要精简易读
}
}

3.什么是字节?

  • 位(bit):是计算机内部数据储存的最小单位

  • 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示

  • 1B(byte,字节)=8bit(位)

  • 字符:是指计算机中使用的字母、数字、字和符号

  • 1bit表示1位

  • 1Byte表示一个字节,1B=8b

  • 思考:电脑的32位和64位的区别是什么?

    • 32位的操作系统只可以用32位的CPU,最多可以支持4G的内存;而64位的操作系统既可以装32位的操作系统的CPU也可以装64位的操作系统,最多可以支持128G的内存(它们之间有一个“寻址”能力)

四、类型转换

  • 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换
低----------------------------------------------->高
byte, short, chat -> int -> long -> float -> double
  • 运算中,不同类型的数据先转化为同一类型,然后进行运算。

  • 强制类型转换

  • 自动类型转换

public class TypeConversion {
public static void main(String[] args) {
int i = 128;
byte b = (byte) i; //强制类型转换:高 -> 低 (类型) 变量名
double d = i; //自动类型转换:低 -> 高
System.out.println(i); //128
System.out.println(b); //-128,内存溢出
System.out.println(d); //128.0
System.out.println(); /*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题!
*/
System.out.println((int) 23.7); //23
System.out.println((int) -23.78f); //-23 char c = 'a';
int i1 = c + 1;
System.out.println(i1); //98
System.out.println((char) i1); //b
System.out.println(); //操作比较大的数的时候,注意溢出问题
//JDK7新特性,数字之间可以用 _ 分割
int money = 10_0000_0000;
System.out.println(money); //1000000000
int years = 20;
int total = money * years;
System.out.println(total); //-1474836480,计算的时候溢出了
long total2 = money * years;
System.out.println(total); //-1474836480,默认是int,计算完之后才转换为long类型,转换之前已经存在问题了
long total3 = money * (long) years;
System.out.println(total3); //20000000000,在计算之前就把精度解决掉了
}
}

五、变量、常量、作用域

1.变量(Variable)

  • 变量是什么:就是可以变化的量!变量代表内存中的一块空间,空间里面要放的东西不确定,位置确定,存的东西不确定

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

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

    //数据类型 变量名 = 值;
    //可以使用,隔开来声明多个同类型变量
    //不建议在一行里面定义多个值
  • 注意:

    • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
    • 变量名必须是合法的标识符。
    • 变量名必须是一条完整的语句,因此每一个声明都必须以;结束
public class Variable {
public static void main(String[] args) {
//可以使用,隔开来声明多个同类型变量
//不建议在一行里面定义多个值
//程序可读性!!!
int a, b, c;
int d = 1, e = 2, f = 3;
String s = "zhangsan";
}
}

2.常量(Constant)

  • 常量(Constant):初始化(initialize)后不能再改变的值!不会变动的值。
  • 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
final 常量名 = 值
  • 常量名一般使用大写字符
public class Constant {
//修饰符不存在先后顺序
static final double PI = 3.14; public static void main(String[] args) {
System.out.println(PI); //3.14
}
}

3.变量作用域(Scope)

  • 类变量:写在类里面,需要加关键字static
  • 实例变量:写在类中间
  • 局部变量:写在方法里面
public class Scope {

    //类变量:static,从属于类,随着类一起出现,一起消失
static double salary = 4510471; //属性:变量 //实例变量:在类里面方法的外面,从属于对象(类),
//如果不进行初始化,会变成这个类型的默认值,
// 所有数值类型初始化一般都是 0 或 0.0 ,
// 字符串变量初始化是十六位的 U0000 ,
// 布尔值默认是false,
// 除了基本类型,其余的默认值都是null
String name;
int age; //main方法
public static void main(String[] args) {
//局部变量:写在方法里面,使用之前必须声明和初始化值
int i = 10;
System.out.println(i); //10 //变量类型 变量名 = 值;
Scope s = new Scope();
System.out.println(s.name); //null
System.out.println(s.age); //0 //类变量:static 可以直接输出
System.out.println(salary); //4510471.0
} //main方法
public void other() {
//局部变量:写在方法里面,使用之前必须声明和初始化值
}
}

4.变量的命名规范

  • 所有变量、方法名、类名:见明知意
  • 类成员变量:首字母小写和驼峰命名原则:monthSalary,除了第一个单词以外,后面的单词首字母大写
  • 局部变量:首字母小写和驼峰命名原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰命名原则
  • 方法名:首字母小写和驼峰命名原则:userAdd()

六、运算符

  • Java支持如下运算符:()优先级最高

1.算术运算符:+、-、*、/、%、++、--

public class ArithmeticOperator {
public static void main(String[] args) {
//二元运算符:两个数操作
int i1 = 10;
int i2 = 20;
int i3 = 25;
int i4 = 25;
int i5 = 21; System.out.println(i1 + i2); //30
System.out.println(i1 - i2); //-10
System.out.println(i1 * i2); //200
System.out.println(i1 / i2); //0
System.out.println(i1 / (double) i2); //0.5
System.out.println(); //如果两个操作或多个操作中,有一个数为long,那么结果类型也为long,如果没有long的时候,结果都为int,无论是否有int操作
//运算规则:先将运算级统一成该运算中最高的数据类型后再运算
long l = 123456789L;
int i = 123;
short s = 12;
byte b = 1; //如果有一个数为double,那么它们的结果也为double
System.out.println(l + i + s + b); //123456925 long
// System.out.println((String) (l + i + s + b)); //这样就可以看到long类型不能转换为String类型
System.out.println(i + s + b); //136 int
System.out.println(s + b); //13 int
System.out.println(); //取余,模运算
System.out.println(i5 % i1); //1 21 / 10 = 2 ......1
System.out.println(); //一元运算符:一个数操作
//++自增 --自减
int i6 = 6;
int i7 = i6++; //执行完这行代码后,先给i7赋值,再自增
//a ++ a = a + 1
System.out.println(i6); //7
//a ++ a = a + 1
int i8 = ++i6;//执行完这行代码前,先自增,再给i8赋值 System.out.println(i6); //8
System.out.println(i7); //6
System.out.println(i8); //8
System.out.println(); //幂运算 2^3 借助工具类 Math
System.out.println(Math.pow(2, 3));
}
}

2.赋值运算符:=

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

public class RelationalOperator {
public static void main(String[] args) {
//关系运算符返回的结果:true/false 布尔值
int i1 = 10;
int i2 = 20; System.out.println(i1 > i2); //false
System.out.println(i1 < i2); //true
System.out.println(i1 == i2); //false
System.out.println(i1 != i2); //true
}
}

4.逻辑运算符:&&、||、!

public class LogicalOperator {
public static void main(String[] args) {
//与(and) 或(or) 非(not)
boolean b1 = true;
boolean b2 = false; System.out.println(b1 && b2); //false 逻辑与:两个变量都为真,结果才为真
System.out.println(b1 || b2); //true 逻辑或:两个变量有一个为真,结果为真
System.out.println(!(b1 && b2)); //true
System.out.println(); //短路运算
int i = 5;
System.out.println((i < 4) && (i++ < 4)); //false 前面为false,就不执行后面
System.out.println(i); //5
}
}

5.位运算符:&、|、^、~、>>、<<、>>>(了解即可)

public class PositionalOperator {
public static void main(String[] args) {
/*
与(&)、或(|)、异或(^)、非(~)
A = 0011 1100
B = 0000 1101 A&B = 0000 1100 两个数比较,如果都为1,结果为1
A|B = 0011 1101 两个数比较,如果都为0,结果为0
A^B = 0011 0001 两个数比较,如果位置相同,结果为0,否则为1
~B = 1111 0010 两个数比较,如果为1,结果为0,如果为0,结果为1 2 * 8怎么运算最快 2 * 2 * 2 * 2
右移(>>):数字 / 2
左移(<<):数字 * 2 2进制,逢2进1
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); //16
}
}

6.条件运算符: ? :

public class ConditionalOperator {
public static void main(String[] args) {
//三元运算符 x ? y : z
//如果x == true,结果为y,否则结果为z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type); //及格
}
}

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

public class AssignmentOperator {
public static void main(String[] args) {
int i1 = 10;
int i2 = 20; i1 += i2; //i1 = i1 + i2
System.out.println(i1); //30
System.out.println(); //字符串链接符 +,在 + 两侧,只要一方出现了String,就会把另外一个操作数或者其它操作数都转换为String再进行连接
System.out.println(i1 + i2); //50
System.out.println("" + i1 + i2); //3020 如果字符串在前面会拼接
System.out.println(i1 + i2 + ""); //50 如果字符串在后面会依旧进行运算
}
}

七、包机制(本质就是文件夹)

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

  • 包语句的语法格式为:package

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

//www.baidu.com
package com.baidu.www
  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用 import语句可完成此功能
  • *作为通配符可导入包下所有的类
  • 尽量不要让包里面的名字重复

搜索”阿里巴巴开发手册“

4.Java基础的更多相关文章

  1. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  2. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  3. 【JAVA面试题系列一】面试题总汇--JAVA基础部分

    JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...

  4. 最适合作为Java基础面试题之Singleton模式

    看似只是最简单的一种设计模式,可细细挖掘,static.synchronized.volatile关键字.内部类.对象克隆.序列化.枚举类型.反射和类加载机制等基础却又不易理解透彻的Java知识纷纷呼 ...

  5. java基础练习 字符串,控制流,日历,日期等

    1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...

  6. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  7. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  8. java基础学习03(java基础程序设计)

    java基础程序设计 一.完成的目标 1. 掌握java中的数据类型划分 2. 8种基本数据类型的使用及数据类型转换 3. 位运算.运算符.表达式 4. 判断.循环语句的使用 5. break和con ...

  9. Java基础加强之多线程篇(线程创建与终止、互斥、通信、本地变量)

    线程创建与终止 线程创建 Thread类与Runnable接口的关系 public interface Runnable { public abstract void run(); } public ...

  10. java基础知识小总结【转】

    java基础知识小总结 在一个独立的原始程序里,只能有一个 public 类,却可以有许多 non-public 类.此外,若是在一个 Java 程序中没有一个类是 public,那么该 Java 程 ...

随机推荐

  1. Lombok中的@Builder注解

    1.前言 今天在看项目代码的时候, 遇到了实体类上加@Builder注解, 之前在开发的时候, 一直没有用过这个注解, 便兴致勃勃地去查了一下资料, 它也是Lombok中的注解, 我们都知道Lombo ...

  2. 初遇SpringBoot踩坑与加载静态文件遇到的坑

                              SpringBoot开发 创建SpringBoot项目 大家都知道SpringBoot开发非常快,创建SpringBoot项目时,勾上SpringW ...

  3. 如何不做登录请求而获取cookie到Jmeter里

    如何不做登录请求而获取cookie到Jmeter里? 登录被测系统后,按F12,找到如下位置,将这个表格所有信息都复制到Jmeter的HTTP Cookie管理器元件,这样就可以不需要登录,能继续发送 ...

  4. MegEngine基本概念

    MegEngine基本概念 基本概念 MegEngine 是基于计算图的深度神经网络学习框架. 本文内容会简要介绍计算图及其相关基本概念,以及在 MegEngine 中的实现. 计算图 结合一个简单的 ...

  5. OneFlow 并行特色

    OneFlow 并行特色 在 Consistent 与 Mirrored 视角中,已经知道 OneFlow 提供了 mirrored 与 consistent 两种看待分布式系统的视角,并且提前知道了 ...

  6. ONNX 实时graph优化方法

    ONNX 实时graph优化方法 ONNX实时提供了各种图形优化来提高模型性能.图优化本质上是图级别的转换,从小型图简化和节点消除,到更复杂的节点融合和布局优化. 图形优化根据其复杂性和功能分为几个类 ...

  7. Netty 框架学习 —— 传输

    概述 流经网络的数据总是具有相同的类型:字节,这些字节如何传输主要取决于我们所说的网络传输.用户并不关心传输的细节,只在乎字节是否被可靠地发送和接收 如果使用 Java 网络编程,你会发现,某些时候当 ...

  8. Pytorch线性规划模型 学习笔记(一)

    Pytorch线性规划模型 学习笔记(一) Pytorch视频学习资料参考:<PyTorch深度学习实践>完结合集 Pytorch搭建神经网络的四大部分 1. 准备数据 Prepare d ...

  9. CENTOS7 安装 SYNCTHING

    本地电脑需要同步远程数据,安装syncthing 测试 1:下载 wget https://github.com/syncthing/syncthing/releases/download/v1.5. ...

  10. 【NX二次开发】Block UI 指定轴

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...