java之旅

Java之旅

java大小写敏感

public class Hello

Hello是类名 class定义类

java语句总是从main方法开始执行!

Java入口程序规定的方法必须是静态方法,方法名必须为main,括号内的参数必须是String数组

一个字节=八个比特

1byte=8bit

对于float类型,需要加上f后缀。

定义变量的时候,如果加上final修饰符,这个变量就变成了常量:

常量在定义时进行初始化后就不可再次赋值,再次赋值会导致编译错误。

var关键字

有些时候,类型的名字太长,写起来比较麻烦。例如:

StringBuilder sb = new StringBuilder();

这个时候,如果想省略变量类型,可以使用var关键字:

var sb = new StringBuilder();
 int x = 1; // 变量x从这里开始定义
        ...
        {
   
            ...
            String s = "hello"; // 变量s从这里开始定义
            ...
        } // 变量s作用域到此结束
        ...
        // 注意,这是一个新的变量s,它和上面的变量同名,
        // 但是因为作用域不同,它们是两个不同的变量:
        String s = "hi";

它有一个作用域,就是从定义处开始,到语句块结束。**超出了作用域引用这些变量,编译器会报错。**尽量将变量定义在尽可能小的作用域,并且,不要重复使用变量名。

特别注意:整数的除法对于除数为0时运行时将报错,但编译不会报错

溢出不会出错,却会得到一个奇怪的结果。

整数运算在除数为0时会报错,而浮点数运算在除数为0时,不会报错,但会返回几个特殊值:

double d = 1.2 + 24 / 5; // 5.2

计算结果为5.2,原因是编译器计算24 / 5这个子表达式时,按两个整数进行运算,结果仍为整数4

短路运算

布尔运算的一个重要特点是短路运算。如果一个布尔运算的表达式能提前确定结果,则后续的计算不再执行,直接返回结果。

因为false && x的结果总是false,无论xtrue还是false,因此,与运算在确定第一个值为false后,不再继续计算,而是直接返回false

如果变量b的值为true,则表达式变为true && (5 / 0 > 0)。因为无法进行短路运算,该表达式必定会由于除数为0而报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V2i8LNyC-1617603825976)(C:\Users\86132\AppData\Roaming\Typora\typora-user-images\image-20210403161556785.png)]

因为\是转义字符,所以,两个\\表示一个\字符

注意要区分空值null和空字符串"",空字符串是一个有效的字符串对象,它不等于null

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fVKkvNuq-1617603825976)(C:\Users\86132\AppData\Roaming\Typora\typora-user-images\image-20210403163358068.png)]

java不能像c++一样在一行语句中执行多步操作!!!

数组

数组一旦创建后,大小就不可改变。

可以用数组变量.length获取数组大小:

int[] ns = new int[] { 68, 79, 91, 85, 62 };//编译器自动推算数组大小为5

还可以进一步简写为:

int[] ns = {
    68, 79, 91, 85, 62 };

对于数组ns来说,执行ns = new int[] { 68, 79, 91, 85, 62 };时,它指向一个5个元素的数组:

     ns
      │
      ▼
┌───┬───┬───┬───┬───┬───┬───┐
│   │68 │79 │91 │85 │62 │   │
└───┴───┴───┴───┴───┴───┴───┘

执行ns = new int[] { 1, 2, 3 };时,它指向一个新的3个元素的数组:

     ns ──────────────────────┐
                              │
                              ▼
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│   │68 │79 │91 │85 │62 │   │ 1 │ 2 │ 3 │   │
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘

但是,原有的5个元素的数组并没有改变,只是无法通过变量ns引用到它们而已。

输出

在前面的代码中,我们总是使用System.out.println()来向屏幕输出一些内容。

println是print line的缩写,表示输出并换行。因此,如果输出后不想换行,可以用print()

输入

和输出相比,Java的输入就要复杂得多。

首先,我们通过import语句导入java.util.Scannerimport是导入某个类的语句,必须放到Java源代码的开头

要判断引用类型的变量内容是否相等,必须使用equals()方法:

if (s1.equals(s2))

注意:执行语句s1.equals(s2)时,如果变量s1null,会报NullPointerException

要避免NullPointerException错误,可以利用短路运算符&&

if (s1 != null && s1.equals(“hello”))

使用switch 注意有break,小心穿透效应!

数组

遍历数组可以使用for循环,for循环可以访问数组索引,for each循环直接迭代每个数组元素,但无法获取索引;

使用Arrays.toString()可以快速获取数组内容。

可以直接使用Java标准库提供的Arrays.sort()进行排序;

对数组排序会直接修改数组本身。

二维数组就是数组的数组,三维数组就是二维数组的数组;

多维数组的每个数组元素长度都不要求相同;

打印多维数组可以使用Arrays.deepToString()

最常见的多维数组是二维数组,访问二维数组的一个元素使用array[row][col]

面向对象基础

一、方法

一个class可以包含多个field,例如,我们给Person类就定义了两个field

class Person {
   
    public String name;
    public int age;
}

显然,直接操作field,容易造成逻辑混乱。为了避免外部代码直接去访问field,我们可以用private修饰field,拒绝外部访问:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习前端的小白和爱健身的大学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值