JavaSE学习·(青空の霞光)

前言
        青空の霞光的JavaSE课程在bilibili上算是非常好的新手Java课程,较为通俗易懂,笔者也是打算过一遍,顺便写写感触。

一、Java及计组的基础引入


Java之父——詹姆斯·高加林

计算机的五大基础构件:运算器、控制器、存储器、输入设备和输出设备

Java的经典——“ Write once,  run  anywhere ”

Java兼具了编译型语言和解释型语言的特性,但可能也因此带来了一些缺陷。

JDK要包含JRE,多出了开发工具。

二、Java的一些基本类型


计算机中的二进制表示:

1bit代表1位,同时8bit位一字节,两个字节为一个字 ;

Java中,首位一般代表符号位

提出了原码、反码与补码:

源码:符号位+二进制

反码:除符号位外,其余全部取反

补码:在反码的基础上加一,零的表示方式唯一;

在java编程中,545648941这些都默认是int类型,因此在向long赋值时,需要在末尾加上L,long a = 546548861L,这样才正确。

数据可以用下划线来加以划分,并无区别:1_000_000与1000000一样

十六进制(0x): 0xAF == 175

八进制(0) : 012 == 10

int的最大值+1,由于补码规则,会变为int的最小值;

在java编程中,像1.5264这些默认都是double类型,因此在向float变量赋值时,需要在末尾加上f,

float a = 12.2445f,这样才正确。

由此引出隐式转换规则:
byte -> short -> int -> long -> float -> double

char类型中:65->A(0~65535),可以包含中文

Unicode几乎包含了世界上所有语言的字符,现流行UTF-8。

Unicode是字符集,而UTF-8以及UTF-16均是编码规则。

三、Java的一些运算符及结构

对于char、short、byte在进行运算时,一律会转为int再进行计算。

取负值的情况, a = -a;

换行符为\n

在进行数据类型强制转换的时候,如下述代码所示,最终b会展示为128,而c则是-128;

public static void main(String[] args)
{
    int a = 128;
    short b = (short) a; //128
    byte c = (byte) c; //-128
    System.out.println(b);
}

而对于a++与++a:
 

int a = 8;
int b = -a++ + ++a;
System.out.println(a); // a = 10
System.out.println(b); // b = 2

位运算符包括:& , | , ^ , ~ ,  << ( * 2 ) , >>( / 2 ) 

左移操作<<:高位直接丢弃,低位补0;

右移操作>>:低位直接丢弃,符号位是什么高位补什么;

这都是在负数补码的基础上进行;

&&与||都具有短路特性;

  • &&的左侧条件为false,则返回false,不再运行右侧条件;
  • ||的左侧条件为true,则返回true,同样不在运行右侧条件;

三元表达式:
表达式 ?结果一 :结果二

switch语句——注意在case语句结束时加上break;

int a = 10;
switch(a)
{
    case 1 : 
        System.out.println(a);
        break;
    case 10:
        System.out.println(a);
        break;
    default:
        System.out.println("error")
}

for(;;) 这个将会无限循环;

continue和break遵循就近原则,只对最近的循环生效;

当需要跳出外层循环时,可以对循环进行标签;

out:for(int i = 0 ; i < 2 ; i++)
{
        in:for(int j = 0 ; j < 2 ; j++)
        {
            if(i > j) break out;
        }
}

四、些许感想

1.for循环的底层实现是基于栈来进行的,具体看字节码,较复杂;

2.for循环中i++可以等效替代为i+=1;

3.int的最大值为21亿,可以打印Integer.MAX_VALUE来进行查看;

4.类是模板,对象是基于模板的具体实例;

5.对应的class就是对应的类,有着相应的成员变量和成员方法;

6.对象类型的变量存放的是对象的引用:

Preson p = new Person();
Person p1 = p;

这里的p存放的是一个Person对象的引用,这里的赋值操作,本质上是引用对象的传递,类使用的都是引用类型。

7.空指针异常(给出一个示例):

Person p = null;
p.name ="小红";

8.包的访问权限:
private——仅允许在本类中使用;

默认——允许在同包的类使用(在同一包下且在同一包下的第一层);

protected——允许在不同包下的子类;(在同一包的分支下);

public——允许不同包下的类; 

9.所有的类的父类,都最终可以追溯到Object类,因此继承了Object类的一些方法,例如,clone()、equals()、toString();

10.方法的重写与重载:
重写:即对先前方法内容的覆盖;

重载:通过方法输入参数的不同,增加方法的多样性,从而满足各种需求;

11.子类中继承来的方法,在重写时的级别,只能比父类高或持平,而不能比父类低;

12.abstract关键字用于定义抽象类和抽象方法,即内容缺省,待子类来进行完善,且子类必须实现该抽象方法。

13.抽象类无法直接实例化,抽象类及抽象方法一般仅用于继承,且抽象方法的权限不能为private。

14.接口:对某一行为的具体定义,相当于抽象类中的抽象方法,接口中默认方法为public abstract,当使用implements该接口时,必须要实现该接口下的全部抽象方法;

15.在java8以后,default在接口中为默认实现,接口中不允许有成员方法和成员变量,但允许有静态变量和静态方法;

16.如果类要实现克隆,那么就要implements Cloneable方法,并将权限由protected变为public,但并不指向同一地址。

17.接口可以继承自其他接口,且可以多继承;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值