java学习3-基本语法、数组、特性、io流、线程

1.关键字(单词在java中有特殊含义    所有的字母都是小写)

分为以下几类{

 ①定义:定义数据类型关键字 

                 定义数据类型值关键字  

                 定义程序的流程控制关键字

                 定义创建实例的关键字

                定义包名

                

 ②修饰符:访问权限  以及类 函数 变量

 ③异常:异常处理关键字

④定义类之间关系的关键字

 ⑤其他修饰符关键字

}

 

例如final 关键字https://blog.csdn.net/qq_34375473/article/details/81487803

还可以修饰形式参数  :修饰参数后不能被修改;

声明只读变量  static final    常量: 命名规范(全大写_下换线隔开)

2.标识符(自己命名的)

规则为:(主要是:见名知意)

       26个英文字母大小写  0,9  以及_  $

      不能数字开头

      不能直接使用关键字和保留字 

      不能包含空格

规范:

     包名:aaabbbbccc

     类名 接口名:AaaaBbbb

      方法名:aaaaBbbbbZzzz

      常量名 AAAA_BBBB

3.变量:

 3.1(占内存的存储空间+组成:数据类型 :变量名+声明后使用)

 作用范围:在一对{}中有效

格式:数据类型  变量名 =初始化值

使用变量名进行访问内存中存储的变量

但是   string 和包装类:是按值传递。

包装类型:

https://www.cnblogs.com/lyq-biu/p/10778109.html

 3.2变量转化:{

  ①自动转化

 所占内存位数小的转化成容量位数占的大的

注意点:

       第一。long 8字节 但可以自动转化成float 4字节 

他们用科学计数法的方式不一样(底层存储结构不一样)。

long: 2^63-1

float: 3.4*10^38 > 2*8^38 = 2*2^3^38=2*2^114 > 2^63-1

所以3.4*10^38 > 2^62-1

     原因:https://blog.csdn.net/shanshan1yi/article/details/48477119

     第二。char 编码方式是ascii码   a   对应十进制数为97  A:65

     第三。char(//  只能表示一个英文字符    可以是一个汉字  标点=符号  日文等  转义字符   2字节)  short (2字节) byte (1字节)  但是两两(或者是和自身)进行运算 都自动转化默认的是 int

  ②强制转化  损失精度   留下后面低位的 丢失高位

}

3.3  string 引用数据类型的使用

 

运算只能是  (+)  连接运算    只能结果还是string类型

 

3.4在内存中的二进制存储结构:


byte 是 1个字节  占8位   范围 :2的8次方 256种组成

对于正数和负数  在计算机中的存储格式:

正数 (原码 反码 补码都一致)  负数是用补码的形式来存储的   (负数的反码=正数的二进制式子 除去第一位符号位外 全部取反    )   (负数补码=负数反码+1)

3.5变量的运算:

   ①算术运算符:

(注意点:

对于整型数a,b来说,取模运算或者求余运算的方法都是:

1.求 整数商: c = a/b;

2.计算模或者余数: r = a - c*b.

求模运算和求余运算在第一步不同:

取余运算在取c的值时,向0 方向舍入(fix()函数);

取模运算在计算c的值时,向负无穷方向舍入(floor()函数)。

例如计算:-7 Mod 4

那么:a = -7;b = 4;

第一步:求整数商c,如进行求模运算c = -2(向负无穷方向舍入),求余c = -1(向0方向舍入);

第二步:计算模和余数的公式相同,但因c的值不同,求模时r = 1,求余时r = -3。

归纳:当a和b符号一致时,求模运算和求余运算所得的c的值一致,因此结果一致。

当符号不一致时,结果不一样。求模运算结果的符号和b一致,求余运算结果的符号和a一致。

另外各个环境下%运算符的含义不同,比如c/c++,java 为取余,而python则为取模。

java中//取模 也就是求余数 结果的符号取决于 被模数  也就是前面的那个数的符号

②赋值运算符:

s+=1;//这样不会改变s的类型   这样既可以实现运算 也不会改变s的数据类型

③逻辑运算符:(用于boolean 类型的运算)
&区别&&   

 &:不管一开始进行判断的项是true或者false 后者都会进行运算 

&&:左端判断的项是false时 右端不会在进行判断

  |区别||  :

同上

 ^逻辑异或运算  相同为false 不同为true   

④位运算符:(用于数值型运算):  <<  >>  & | ~  ^

& 按位与

| 按位或:

9|5

可写算式如下:

1

2

3

4

 00001001

 |

 00000101

=00001101

           (十进制为13)可见9|5=13

^ 按位异或 :按位异或运算符“^”是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。

~取反:

1

~(1001)

    结果为:

1

0110

<<左移:     左移运算符“<<”是双目运算符。左移n位就是乘以2的n次方。 其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。移位是有限制的

>>右移: 同理可得

就是对于二进制进行运算

 

Continue::直接跳出本次循环,再执行下一次循环。

⑤三元运算符:

例子:abc中最大值:(a>b)?((a>c)?a:((b>c)?b:c) ):((b>c)?b:((c>a)?c:a))

4.程序代码的流程控制

5.数组:https://blog.csdn.net/Taylor_Ocean/article/details/82347707

 

 

 

 

 

6.方法中的可变参数     例如:String...   args

 

数据类型:一组性质相同的值的集合以及在这个集合上的一组操作。

对于数据类型的使用约束程度划分:强类型语言和弱类型语言:

强类型语言:实现必须声明变量类型。例如 java中 int i;

弱类型语言:声明一个变量时可以不指定其类型。例如:javascrip  :var i;

 

静态和动态:

静态:静态变量(static 修饰符)-------相反----实例变量属于某一个实例的对象的。

 

7.封装、继承、多态、实现:

单继承(类之间父子继承、接口可以多继承多实现)、类也可多实现(功能)

多态(继承后)向上转型,实例引用的是子类的对象,但丢失子类的特有属性和方法,不能再访问子类中添加的属性和方法。

因为:虽然引用的对象中有有关的成员,但是编译过程中编译器总是根据变量声明的类型进行检查,所以在检查中父类类型的变量认为没有子类的属性和方法。造型只有向上转型后的才能再向下转型):

Person p=new Student();  Sutdent  s=(Student)p;

抽象类:不用实现细节,只需要不具体的抽象方法(抽象方法必须在抽象类中),为了子类继承抽象类,扩写实现没有实现的方法。子类必须实“实现”重写父类抽象的所有方法(若不全部重写,则子类也必须是抽象的)。为了代码的重用、编程规划。

 

同类下:重载(方法同名不同参数或者不同参数类型)

https://blog.csdn.net/wintershii/article/details/80558739

 

8.JAVA的实例块和静态块

静态块比变量初始化在前,但静态块是类加载的时候和静态属性一起执行的

https://blog.csdn.net/qq_40550973/article/details/80549453

 

匿名对象和有名对象:

new Test().show( new Person());   //  只能一次使用,以后无法访问到,因为栈中没有存堆内存的对象的地址,所以随后就被回收系统收回。

匿名类:

接口、抽象类无法实例化:方法可以创建一个类来继承抽象类,但是也可以匿名内部类(系统自己创建生成销毁)

例如   Person p =new Person(){

@override

public void xxx(){}//重写方法

}

9.异常处理

error: jvm虚拟机内部错误、系统资源耗尽严重情况

exception:其他因编程错误或者偶然因素导致:空指针(创建的引用类型的对象,指向为空)

 

执行return,但先检查是否有finally,限制性finally在执行return(交还执行权)

 

10.String、stringBuffer、stringBuilder

string:创建对象之后,内容不可修改,可以重新创建对象覆盖原内存空间

stringBuffer:可变字符串处理类,对象创建后,也可长度和内容进行修改,每个创建的对象拥有一个可变容量的字符串缓冲区,多线程安全,每个方法有synchronized修饰:同步锁,

stringbuilder:可变字符串处理类,多线程的没有同步性,不安全

 

11.时间类

https://blog.csdn.net/ydxzmhy/article/details/51730403

 

 

增强体for循环:不安全,for (Student student : collection) { }   此处的collection在每一次执行后,都会有变换,

13.存储对象的方法:数组、集合

数组:初始化固定长度,无法变化

集合:(封装数组,底层实现使用数组):可以各种类型对象

hashcode:迭代思想(质数31不能被其他数除,再乘以质数迭代很大程度上保证了hash值不同)

 

 

 

14io流

java.io.file类  ---------------------------->>io流(涉及到文件对象中的内容的操作)

文件和目录路径名的抽象表示。将文件看成一个抽象类,一个文件就对应着创建的一个实例化对象

 

io流:用于设备之间的数据传输(流stream)输入<-------------------->输出   等价于  内存<------------------->外存

https://blog.csdn.net/weixin_34278190/article/details/85832244

 

15.main方法执行问题:

 

15.线程{进程、创建方式、线程生命周期、同步(安全)、通信}

问题:

1.为什么创建线程后重写run()方法,调用start()方法

https://blog.csdn.net/qq_40108025/article/details/95357484

https://blog.csdn.net/weixin_42956047/article/details/96432970

https://www.cnblogs.com/marsitman/p/11183177.html

Treadgroup线程组,main主线程

threadgroup的解读:

https://www.cnblogs.com/aspirant/p/10644180.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

风吹海洋浪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值