2021.3.30初见JAVA

初见JAVA (Day01记录)

自己引自己。我觉得这一切都很有趣,很神奇,很有魅力

我到处查资料,查这查那,到处寻找,然后将我的顺序和归纳记下来,可能有不对的地方,无论是内容还是学习道路,但谁不是摸着石头过来的呢。起初我是用记事本做笔记,但是没有图片结合,所以硬生生在记事本里手打一遍,然后IDEA里手打一遍,最后手机备忘录里再次手打一遍。相当于我一天在晚上回顾时梳理了三遍。经群里他人推荐Markdown,查询并快速学习了Typora的基操,然后开始转博客记录,希望这些从无到有的过程,永远敲打着那些独自的时光,回响将长久存在。

一.标识符

1. 定义

标识符就是用于给 Java 程序中变量、类、方法等命名的符号。

2. 规则

  1. 标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符,不能以数字开头。譬如:123name 就是不合法的
  2. 标识符不能是 Java 关键字和保留字( Java 预留的关键字,以后的升级版本中有可能作为关键字),但可以包含关键字和保留字。如:不可以使用 void 作为标识符,但是 Myvoid 可以
  3. 标识符是严格区分大小写的。 所以涅,一定要分清楚 imooc 和 IMooc 是两个不同的标识符哦!标识符的命名最好能反映出其作用,做到见名知意。
  4. 哪些关键词呢:

image

二.变量

1. 变量的命名规则

如图:

image

2. 保持的习惯

  1. 变量名由多单词组成时,第一个单词的首字母小写,其后单词的首字母大写,俗称骆驼式命名法(也称驼峰命名法),如 myAge

  2. 变量命名时,尽量简短且能清楚的表达变量的作用,做到见名知意。如:定义变量名 stuName 保存“学生姓名”信息

PS: Java 变量名的长度没有限制,但 Java 语言是区分大小写的,所以 price 和 Price 是两个完全不同的变量哦!

3. 使用场景举例

image



2021.4.6 更新

1. 类变量

public class Demo07{
//类变量: static
    static double salary = 9000;
public static void main(String[] args){
    System.out.println(salary);
}
}

2. 局部变量

public class Demo07{

public static void main(String[] args){
    //局部变量:必须声明且有初始化值
    int i = 1;
    System.out.println(i);
}
}

3. 实例变量

public class Demo07{
    /*实例变量:从属于对象
    如果没有初始化值,那么默认为0或者0.0
    布尔值的默认为false
    除了基本类型,其他的默认为null*/
   String name;
    int age;
public static void main(String[] args){
    //变量类型  变量名字 = new Demon07();
  new Demon07();
    System.out.println(age);//输出age为0
}
}



三.数据类型

1. 基本数据类型与引用数据类型,如下图:

image

2. 常用的一些基本数据类型

image

因为我看到这儿觉得有些真的搞不清区别,所以查询了char与String的区别,float与double的区别

  1. char表示字符,定义时用单引号,只能存储一个字符,如char c='x';
    而String表示字符串,定义时用双引号,可以存储一个或多个字符,如String name="tom";
    char是基本数据类型,而String 是一个类,具有面向对象的特征,可以调用方法,如name.length()获取字符串的长度。

  2. float是单精度浮点数,内存分配4个字节,占32位,有效小数位6-7位
    double是双精度浮点数,内存分配8个字节,占64位,有效小数位15位
    java中默认声明的小数是double类型的,如double d=4.0
    如果声明: float x = 4.0则会报错,需要如下写法:float x = 4.0f 或者 float x = (float)4.0 ,其中4.0f后面的f只是为了区别double,并不代表任何数字上的意义
    对编程人员来而,double 和 float 的区别是double精度高,但double消耗内存是float的两倍,且double的运算速度较float稍慢

由于我在一道题里随机试数值的时候,恰巧卡了int类型的上限,导致输不出来正确的结果,所以又查了int类型

image
byte:-128~127
short:-32768~32767
long:long类型,数字后面要加 L


2021.4.6更新
科普:

1. “位”(bit)是计算机内部数据储存的最小单位;“字节”(byte)是计算机数据处理的基本单位,1B = 8bit,也就是一字节等于8位;1024B=1KB,1024KB=1MB,1024M=1GB,1024G=1TB····

2. 二进制:0b 八进制:0 十六进制:0x

int num1 = 0b10;//0b 二进制数字
    int num2 = 010;//0 八进制数字
int num3 = 0x10;//0x 十六进制数字

3. 最好避免用浮点数进行比较

float a = 0.1f;//结果0.1
double b = 1.0/10;//结果0.1
System.out.println(a==b);//可以去测试一下a是否等于b。false

浮点数是有限的,离散的,存在舍入误差,无限接近但不等于(可以用BigDecimal 这种数学工具类进行比较)

4. 字符的本质还是数字

char name = '计';
System.out.println(name);
System.out.println((int)name);//强制转换

(编码 Unicode 2字节 0~65536 )(Unicode编码的表示方式为U0000 UFFFF)

char c = '\u0061';
System.out.println(c);


3. 常量

  1. 什么是常量,是不是我们数学里那种确定的数?所谓常量,我们可以理解为是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变。
    语法:final 常量名 = 值;

  2. 程序中使用常量可以提高代码的可维护性。例如,在项目开发时,我们需要指定用户的性别,此时可以定义一个常量 SEX,赋值为 "男",在需要指定用户性别的地方直接调用此常量即可,避免了由于用户的不规范赋值导致程序出错的情况。

  3. 常量名一般使用大写字符!
    final char SEX='男';
    final String NAME="张三";
    final int NUM=2021;
    等等

4. 自动类型转换条件

  1. 目标类型能与源类型兼容,如 double 型兼容 int 型,但是 char 型不能兼容 int 型
  2. 目标类型大于源类型,如 double 类型长度为 8 字节, int 类型为 4 字节,因此 double 类型的变量里直接可以存放 int 类型的数据,但反过来就不可以了

5. 强制类型转换(高转低)

举个例子:

double avg1=65.7;
int avg2=(int)avg1;
System.out.println(avg1);
System.out.println(avg2);

就不详细写了,截取举这个简单例子,可以看出将double型强制转换为了int型,输出结果为:
avg1=65.7
avg2=65

  1. 不难看出,强制转换语法为:(数据类型)数值
  2. 可以看出,转换后直接去掉了小数位。说明精度会出现误差,那么数据就有丢失。所以考虑清楚。


此处2021.4.6更新

1. 避免内存溢出的情况

2. 不能对布尔值进行转换

3. 不能把对象类型转换成不相干的类型

4. 高容量转换为低容量需要强制

5. 数字之间可以用下划线分割 10_0000_0000

6. 低到高的顺序:byte--short--char--int---long---float---double

7. 计算前转换好类型,否则还是之前的类型



四.运算符

1. 常用赋值运算符

如图:

image

2. 常用算数运算符

如图:

image

3. 常用比较运算符

如图:

image

  • 比较运算符用于判断两个数据的大小,例如:大于、等于、不等于。比较的结果是一个布尔值( true 或 false )
  • < 、> 、 >= 、<= 只支持左右两边操作数是数值类型
  • == 、 != 两边的操作数既可以是数值类型,也可以是引用类型

4. 常用逻辑运算符

如图:

image

  • 当使用逻辑运算符时,我们会遇到一种很有趣的“短路”现象。
    譬如:( one > two ) && ( one < three ) 中,如果能确定左边 one > two 运行结果为 false , 则系统就认为已经没有必要执行右侧的 one < three
    同理,在( one > two ) || ( one < three ) 中,如果能确定左边表达式的运行结果为 true , 则系统也同样会认为已经没有必要再进行右侧的 one < three 的执行!

5. 条件运算符

  1. 条件运算符( ? : )也称为 “三元运算符”
  2. 语法形式:布尔表达式 ? 表达式1 :表达式2
  3. 运算过程:如果布尔表达式的值为 true ,则返回 表达式1 的值,否则返回 表达式2 的值
    举例:
public class HelloWorld{
       public static void main(String[] args){
             int score=68;
//定义并赋值考试结果score为68,
             String mark=(68>=60)?"及格":"不及格";
//判断,如果大于等于60,则为及格,反之不及格
             System.out.println("考试结果如何:"+mark);
     }
}

考试结果如何:及格

6. 运算符的优先级

如图:

image

7. 注释

一般来说,对于一份规范的程序源代码而言,注释应该占到源代码的 1/3 以上。因此,注释是程序源代码的重要组成部分,一定要加以重视!

  1. Java 中注释有三种类型:

单行注释:// 注释内容

多行注释/* 注释内容 */

文档注释/** 注释内容 */

  1. 被注释的代码块在程序运行时是不会被执行的

  2. 我们可以通过 javadoc 命令从文档注释中提取内容,生成程序的 API 帮助文档。
    PS:使用文档注释时还可以使用 javadoc 标记,生成更详细的文档信息:
    @author 标明开发该类模块的作者
    @version 标明该类模块的版本
    @see 参考转向,也就是相关主题
    @param 对方法中某参数的说明
    @return 对方法返回值的说明
    @exception 对方法可能抛出的异常进行说明

以上是我第一天的内容

posted @ 2021-04-02 15:29  J九木  阅读(67)  评论(0编辑  收藏  举报