Java基础

基础

1.变量

理解为对存储数据的操作,需要指明类型和变量名,使用前需要初始化

2.基本类型

分为:整数(byte,short,int,long)

浮点(float,double)

Char

Boolean

2.1Int:正负21亿左右;相除是舍弃尾数;结果过大会溢出,正变负,负变正;0X开头是16进制,0开头是8进制。

2.2Long:大小-2e(64-1)~~2e(63-1)

-1;直接赋值需要在值后面加上l;计算大数据在后

2.3Double和float:默认小数为double;double是float的两倍,所以叫double;十进制对于1/10表示会有误差,所以需要精确计算需要BigDecimal

2.4Char:实际为一个非负正数;

2.5Boolean:只有true和false;

2.6基本类型间的转换:

整数直接量可以直接复制给byte, short,

char ,他们参与运算直接转换为int类型。

基本类型的转换: 隐式(从小到大)强制(从大到小)

隐式的:多种类型之间运算时,自动从小的类型转换为大的类型;

byte,char,short运算时都先转换为int类型再运算

强制转换:(需要转换的类型)变量 有可能精度损失或则溢出

3.运算符号

3.1运算符号:%(取模),++,--(放在前面是先自增,放在后面是使用后在自增)

3.2关系符:<,

>, >=, <=, ==, != , &&(第一个为false就不再计算), !, ||(第一个为true就不再计算)。

3.3赋值运算符:” =”将右边的值赋值给左边。在前面加上其他运算符则为扩展运算符如:+=,-=等,其运算效率比较高;

3.4+:除了运算可以实现字符串连接;快速赋值为字符串,其他类型连接:+“”;

3.5条件(三木)运算:boolean表达式?表达式1:表达式2。计算boolean表达式,为true则结果是表达式1,是false则结果是表达式2条件运算符可以嵌套使用String r =

a > 0 ? "正数" : (a == 0 ?

"0":"负数");

注意:浮点计算不能用double二进制无法准确的表示1/10

计算后的类型转换:byte b2 =

(byte)(b1+b2);不能写成:byte b2 =(byte)b1+b2;

4.条件选择

4.1任何复杂的逻辑顺序都可以通过顺序,分支,循环三种基本的程序结构实现

4.2分支

4.2.1If;

4.2.2if

else;

4.2.3switch

1.7之前是只能整型,之后是可以string和char

swith() {

case整型常量值1: 语句1; 不加break会穿透(根据考虑使用);

……

default:语句n;

}

switch的本意是符合就执行所有后面语句代码;

4.3循环

4.3.1While ( Boolean ){语句}和do {语句}while ( Boolean ) ;在于是否必须要执行执行语句;

4.3.2For: for(循环变量初始状态1 ;循环条件2 ;循环条件的改变3 ){}

计算表达式1的值,通常为循环变量赋初值;

计算表达式2(表达式2为逻辑表达式)的值,即判断循环条件是否为真,若值为真则执行循环体一次(语句块),否则跳出循环;

执行循环体;

计算表达式3的值,此处通常写更新循环变量的赋值表达式;如此循环往复,直到表达式2的值为false。

for语句通常用于解决固定次数循环的处理,它的三个参数都可以设置为空,但是“;”号不能少,表达式1,和表达式3都可以设置多个语句用“,”分开。直到……这样的语句是,优先选择do-while语句来实现;

4.3.3break和continue

1.break用于循环和switch表示跳出循环执行后面的语句。break只能跳出一层循环。

2.continue只能用于循环表示跳出此次循环体中剩余的语句执行下次循环。

5.集合

5.1数组:为相同元素的集合,按线性顺序排列,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素(“一个跟一个”),可以通过元素所在位置的顺序号(下标)做标识访问每一个元素(下标从0开始,最大到元素个数-1),数组创建后长度不可改变。

5.1.1申明

数组类型[]数组名= new数据类型[大小];

确切数据类型:用于分配空间;数组名:用于后面引用;new用于创建数组,需要指定大小,数组大小指定后不可变;

5.1.2初始化:

基本类型在数组创建后会被赋予初始值,0;0.0;false等;

手动赋值:int [ ] arr = { 10,23,30,-10,21 } ;这种写法只适合与声明的时候,声明之后再这样赋值是不可以的。int[] arr;arr = new int[]{10,23,30,-10,21 };声明之后的写法;

注意:new之后的[]中不可以写长度,而元素的个数就是数组的长度。

5.1.3数组的复制

1. System.arraycopy(Object src,int srcPso, Object src, int srcPso,int length)

参数的意义:源数组,起始位置,目标数组,目标数组中的起始位置,长度

2. Arrays.copyOf(数组的引用,int newLength)返回值为一个数组,多出的长度用默认值补齐。

5.1.4数组的排序:Arrays.sort();

5.1.5数组的排序:Arrays.toString()可以打印数组;

6.类

6.1引用

6.1.1除了8种基本类型的变量外其他都是引用类型的变量;

6.1.2引用:使用new的时候创建,Object obj = new Object();创建引用obj,new后面的是调用的类的构造方法;还可以通过赋值的方式创建:Object obj = object;此时创建引用obj,但是他和object指向同一个对象;

6.2方法:方法名和参数列表一个类中不可能有两个方法签名相同的方法

6.2.1构造方法与类同名,没有返回值类型有访问修饰符;

构造方法常常给成员变量初始化

造方法在创建对象时被自动调用的

JAVA语法规定,任何一个类都必须含有构造方法,假如源程序中没有定义,则编译器在编译时将为其添加一个无参的空构造方法,当类定义了构造方法后,Java编译器将不再添加默认的构造方法

构造方法可以重载

6.2.2方法重载:方法名相同,但是方法参数不一样;

重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。

重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如:父类的一个方法申明了一个检查异常IOException,但是在重写这个方法的时候不能抛出Exception异常,因为Exception是IOException的父类,只能抛出IOException的子类异常。

参数列表必须完全与被重写方法的相同;

返回类型必须完全与被重写方法的返回类型相同;

访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。

父类的成员方法只能被它的子类重写。

声明为final的方法不能被重写。

声明为static的方法不能被重写,但是能够被再次声明。

子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。

子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。

重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。

构造方法不能被重写。

如果不能继承一个方法,则不能重写这个方法

Super关键字的使用

当需要在子类中调用父类的被重写方法时,要使用super关键字。

6.2.3方法重写

重载(overloading)是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

只能重载构造函数

重载规则

被重载的方法必须改变参数列表(参数个数或类型或顺序不一样);

被重载的方法可以改变返回类型;

被重载的方法可以改变访问修饰符;

被重载的方法可以声明新的或更广的检查异常;

方法能够在同一个类中或者在一个子类中被重载。

无法以返回值类型作为重载函数的区分标准。

6.2.4重写与重载之间的区别

区别点重载方法重写方法

参数列表必须修改一定不能修改

返回类型可以修改一定不能修改

异常可以修改可以减少或删除,一定不能抛出新的或者更广的异常

访问可以修改一定不能做更严格的限制(可以降低限制)

6.2.5总结

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载是一类中多态性的一种表现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,586评论 4 12
  • 前言:最近感冒的不太想去面试,在家就对Java se的基础做了一些小总结 1.JDK和JRE的区别 一 基础知识 ...
    AntCode阅读 1,120评论 0 1
  • 作者 1 一个Java源程序是由若干个类 组成。 2 class 是Java的关键字,用来定义类。 3 Java应...
    java大湿兄阅读 5,535评论 4 169
  • 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?答:可以有多个类,但只能有一个publ...
    岳小川阅读 906评论 0 2
  • 大学时候,他的穷追不舍终于俘获了她的心。往后的岁月如众多情侣一样,你侬我侬。偶尔的意见不合,小争吵的不快,也会被蜜...
    纪如锦阅读 346评论 0 0