JavaSE基础一
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaSE基础一,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含12768字,纯文字阅读大概需要19分钟。
内容图文
![JavaSE基础一](/upload/InfoBanner/zyjiaocheng/745/f1187ef3336542188a4aac3073efce25.jpg)
JavaSE基础一
Java基础
JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算
标识符中常见的命名规则(了解)
见名知意
A:包
最好是域名倒过来,要求所有的字母小写
B:类或者接口
如果是一个单词首字母大写
如果是多个单词每个单词首字母大写(驼峰标识)
C:方法或者变量
如果是一个单词全部小写
如果是多个单词,从第二个单词首字母大写
D:常量
如果是一个单词,所有字母大写
如果是多个单词,所有的单词大写,用下划线区分每个单词字面值常量
其中较为特殊的是: 字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号 空常量 null(数组部分讲解)
自定义常量(面向对象部分讲)
不同进制数据的表现形式(掌握)
A:二进制的数据表现形式
由0,1组成。以0b(b可以大写也可以小写)开头(JDK1.7版本可以表示二进制了)
B:八进制的数据表现形式
由0,1,…7组成。以0开头
C:十进制的数据表现形式
由0,1,…9组成。整数默认是十进制的
D:十六进制的数据表现形式
由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头
E:案例演示
输出不同进制表现100的数据。
0b100 输出4(使用二进制)
0100 输出64(使用八进制)
100 输出100(使用十进制)
0x100 输出256(使用十六进制)
其他进制转十进制
十进制转其他进制
快速的进制转换
原码反码补码(了解)
-
A:为什么要学习原码反码补码?
原码, 反码, 补码 详解
B:有符号数据表示法的几种方式
-
原码 就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
-
通过一个字节,也就是8个二进制位表示+7和-7 0(符号位) 0000111 1(符号位)
反码
- 正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码
- 正数的补码与其原码相同;负数的补码是在其反码的末位加1。
基本数据类型分类(4类8种)
- 整数型
byte 占一个字节 -128到127
short 占两个字 -215~215-1
int 占四个字节 -231~231-1
long 占八个字节 -263~263-1
- 浮点型
float 占四个字节 -3.403E38~3.403E38 单精度
double 占八个字节-1.798E308~1.798E308 双精度
- 字符型
char 占两个字节 0~65535
但一个char只能放一个字母或者一个符号或者一个数字(放一个中文字是没有问题的)
- 布尔型
boolean
boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
面试题之变量相加和常量相加的区别(掌握)
A:案例演示
面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
从两方面去回答这个题
b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
byte类型的变量在进行运算的时候,会自动类型提升为int类型
byte b4 = 3 + 4;
3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
参考技术好文章:Java基础案列斥候7300新浪博客
注意事项:
进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
byte,short,char – int – long – float – double
任何数据类型用+与字符串相连接都会产生新的字符串
System.out.println(“hello”+’a’+1); //运算结果:helloa1
System.out.println(‘a’+1+”hello”); //运算结果:98hello
Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节
所以,Java中的字符可以存储一个中文汉字
算术运算符的基本用法(掌握)
A:什么是运算符
就是对常量和变量进行操作的符号。
B:运算符的分类
算术运算符,赋值运算符,比较(关系或条件)运算符,逻辑运算符,位运算符,三目(元)运算符
C:算数运算符有哪些
+,-,*,/,%,++,–
D:注意事项:
a:+号在java中有三种作用,代表正号,做加法运算,字符串的连接符
b:整数相除只能得到整数。如果想得到小数,必须把数据变化为浮点数类型
c:/获取的是除法操作的商,%获取的是除法操作的余数
%运算符
当左边的绝对值小于右边绝对值时,结果是左边
当左边的绝对值等于右边或是右边的倍数时,结果是0
当左边的绝对值大于右边绝对值时,结果是余数
%运算符结果的符号只和左边有关系,与右边无关
任何一个正整数%2结果不是0就是1可以用来当作切换条件
逻辑运算符的基本用法(掌握)
&逻辑与:有false则false。
|逻辑或:有true则true。
^逻辑异或:相同为false,不同为true。
!逻辑非:非false则true,非true则false。
特点:偶数个不改变本身。
逻辑运算符&&和&的区别
A:案例演示
&&和&的区别?
a:最终结果一样。
b:&&具有短路效果。左边是false,右边不执行。
&是无论左边是false还是true,右边都会执行
||跟|区别和上面的一样的意思,虽然最终结果是一样的,但||左边是true,右边就不执行了
位异或运算符的特点及面试题(掌握)
Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^) - 坦GA的博客 - CSDN博客
位运算符^的特点:一个数据对另一个数据位异或两次,该数本身不变。
B:面试题:
请自己实现两个整数变量的交换
/*
* 位异或运算符的特点
* ^的特点:一个数据对另一个数据位异或两次,该数本身不变。
*/
//System.out.println(5 ^ 10 ^ 10); //结果是5
//System.out.println(5 ^ 10 ^ 5); //结果是
/*
* 请自己实现两个整数变量的交换(不需要定义第三方变量)
* 注意:以后讲课的过程中,我没有明确指定数据的类型,默认int类型。
*/
int x = 10;
int y = 5;
//需要第三方变量,开发推荐用这种
/*int temp;
temp = x;
x = y;
y = temp;*/
//不需要定义第三方变量,有弊端,有可能会超出int的取值范围
/*x = x + y; //10 + 5 = 15
y = x - y; //15 - 5 = 10
x = x - y; //15 - 10 = 5*/
//不需要第三方变量,通过^来做
x = x ^ y; // 10 ^ 5
y = x ^ y; // 10 ^ 5 ^ 5 y = 10
x = x ^ y; // 10 ^ 5 ^ 10 x = 5
位运算符的基本用法2及面试题(了解)
A:案例演示 >>,>>>,<<的用法:
<<:左移 左边最高位丢弃,右边补齐0
左移,向左移动几位就是乘以2的几次幂
:右移 最高位是0,左边补齐0;最高为是1,左边补齐1
右移,向右移动几位就是除以2的几次幂:无符号右移 无论最高位是0还是1,左边补齐0
键盘录入的基本格式讲解(掌握)
如何实现键盘录入呢?
先照格式来。
a:导包
格式:
import java.util.Scanner;
位置:
在class上面。
b:创建键盘录入对象
格式:
Scanner sc = new Scanner(System.in);
c:通过对象获取数据
格式:
int x = sc.nextInt();
选择结构switch语句的练习(掌握)
基本数据类型可以接收byte,short,char,int
引用数据类型可以接收枚举(JDK1.5),String字符串(JDK1.7)
a:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
b:default可以省略吗?
可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
d:default一定要在最后吗?
不是,可以在任意位置。但是建议在最后。不是放在最后的时候,因为switch语句按照顺序执行,它没有break的话,会穿透
e:switch语句的结束条件
a:遇到break就结束了
b:执行到switch的右大括号就结束了
数组
整数类型:byte,short,int,long默认初始化值都是0
浮点类型:float,double默认初始化值都是0.0
布尔类型:boolean默认初始化值false
字符类型:char默认初始化值’\u0000’
char在内存中占的两个字节,是16个二进制位
\u0000,每一个0其实代表的是16进制的0,那么四个0就是代表16个二进制位
[I@19bb25a
[代表是数组,几个就代表几维
I代表是int类型
@是固定的
19bb25a代表的是数组的地址值
Java中的内存分配以及栈和堆的区别
A:栈(掌握)
存储局部变量
B:堆(掌握)
存储new出来的数组或对象
C:方法区
面向对象部分讲解
D:本地方法区
和系统相关
E:寄存器
给CPU使用
Java中的参数传递问题
基本数据类型的值传递,不改变原值,因为调用后就会弹栈,局部变量随之消失
引用数据类型的值传递,改变原值,因为即使方法弹栈,但是堆内存数组对象还在,可以通过地址继续访问
Java中到底是传值还是传址?
1,既是传值,也是传地址,基本数据类型传递的值,引用数据类型传递的地址
2,java中只有传值,因为地址值也是值(出去面试都说这种,支持者是高司令(java之父))
成员变量和局部变量的区别(掌握)
A:在类中的位置不同
成员变量:在类中方法外
局部变量:在方法定义中或者方法声明上
B:在内存中的位置不同
成员变量:在堆内存(成员变量属于对象,对象进堆内存)
局部变量:在栈内存(局部变量属于方法,方法进栈内存)
C:生命周期不同
成员变量:随着对象的创建而存在,随着对象的消失而消失
局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
D:初始化值不同
成员变量:有默认初始化值
局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
注意事项:
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char
引用数据类型变量包括哪些:数组,类,接口,枚举
面向对象
Java面向对象思想和三大特性:java面向对象思想和三大特性 - 黑马飞的博客 - 博客频道 - CSDN.NET
静态变量和成员变量的区别(掌握)
静态变量也叫类变量 成员变量也叫对象变量
A:所属不同
静态变量属于类,所以也称为为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
B:内存中位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
C:内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
D:调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用
static的注意事项(掌握)
A:static的注意事项
a:在静态方法中是没有this关键字的
如何理解呢?
静态是随着类的加载而加载,this是随着对象的创建而存在。
静态比对象先存在。
b:静态方法只能访问静态的成员变量和静态的成员方法
静态方法:
成员变量:只能访问静态变量
成员方法:只能访问静态成员方法
非静态方法:
成员变量:可以是静态的,也可以是非静态的
成员方法:可是是静态的成员方法,也可以是非静态的成员方法。
简单记:
静态只能访问静态。
代码块(了解)
A:代码块概述
在Java中,使用{}括起来的代码被称为代码块。
B:代码块分类
根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解)。
C:常见代码块的应用
a:局部代码块
在方法中出现;限定变量生命周期,及早释放,提高内存利用率
b:构造代码块 (初始化块)
在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
c:静态代码块
在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。
一般用于加载驱动
继承
A:继承的注意事项
a:子类只能继承父类所有非私有的成员(成员方法和成员变量)
b:子类不能继承父类的构造方法,但是可以通过super(马上讲)关键字去访问父类构造方法。
c:不要为了部分功能而去继承
this和super的区别和应用(掌握)
A:this和super都代表什么
this:代表当前对象的引用,谁来调用我,我就代表谁
super:代表当前对象父类的引用
B:this和super的使用区别
a:调用成员变量
this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
super.成员变量 调用父类的成员变量
b:调用构造方法
this(…) 调用本类的构造方法
super(…) 调用父类的构造方法
c:调用成员方法
this.成员方法 调用本类的成员方法,也可以调用父类的方法
super.成员方法 调用父类的成员方法
继承中构造方法的关系(掌握)
A:案例演示
子类中所有的构造方法默认都会访问父类中空参数的构造方法
B:为什么呢?
因为子类会继承父类中的数据,可能还会使用父类的数据。
所以,子类初始化之前,一定要先完成父类数据的初始化。
其实:
每一个构造方法的第一条语句默认都是:super() Object类最顶层的父类。
方法重写的注意事项(掌握)
A:方法重写注意事项
a:父类中私有方法不能被重写
因为父类私有方法子类根本就无法继承
b:子类重写父类方法时,访问权限不能更低
最好就一致
c:父类静态方法,子类也必须通过静态方法进行重写
其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解(静态只能覆盖静态)
子类重写父类方法的时候,最好声明一模一样。
方法重写的面试题(掌握)
A:方法重写的面试题
Override(重写)和Overload(重载)的区别?Overload能改变返回值类型吗?
overload可以改变返回值类型,只看参数列表
方法重写:子类中出现了和父类中方法声明一模一样的方法。与返回值类型有关,返回值是一致(或者是子父类)的
方法重载:本类中出现的方法名一样,参数列表不同的方法。与返回值类型无关。
子类对象调用方法的时候:
先找子类本身,再找父类。(就近原则)
final关键字修饰类,方法以及变量的特点(掌握)
A:final修饰特点
修饰类,类不能被继承
修饰变量,变量就变成了常量,只能被赋值一次
修饰方法,方法不能被重写
B:案例演示
final修饰特点
基本类型,是值不能被改变
引用类型,是地址值不能被改变,对象中的属性可以改变
多态
A 概述:事物存在的多种状态
B 多态前提
a:要有继承关系
b:要有方法重写
c:要有父类引用指向子类对象,比如Animal an=new Cat();//Cat类继承Animal类
C 访问成员变量和成员方法的区别
a 成员变量(无论是否静态):编译看左边(父类),运行看左边(父类),就是父类跟子类都有一个 int num,但多态中的话,
Father f=new Son();//Son继承Father,f.num是访问Father类里面的num
b 成员方法:编译看左边(父类),运行看右边(子类),就是子类Son重写了父类Father的方法show,父类 Father就会调用 show()方法调用子类的方法show(),这个也叫动态绑定
c 静态方法:编译看左边(父类),运行看左边(父类),其实这种相当于类名.方法
总结:只有非静态的成员方法才会动态绑定(编译看左边,运行看右边),像成员变量以及静态方法不会动态绑定 (编译看左边,运行看左边)
D 向上转型和向下转型
a 向上转型:父类引用指向子类对象,就是向上转型,比如Father father=new Son();
b 向下转型:前提必须有向上转型,比如Son s=(Son)father;//前提有Father father=new Son();
抽象类
abstract不可以和static,final,private等共用
- A 抽象类的成员特点
- a 成员变量:可以是变量也可以是常量,abstract不可以修饰成员变量
- b 构造方法:有(每个类都有一个默认的构造方法,无论类是否抽象)
- c 成员方法:可以是抽象方法(强制要求子类做的事情),也可以是非抽象方法的(子类继承的事情,提高代码的 复用性,可以重写)
B 面试题:一个抽象类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义呢?
可以,这样做的目的只有一个:那就是不让其他类创建本类对象,交给子类完成
接口的成员特定
A 成员变量:只能是常量,并且是静态的以及公共的.
- 默认修饰符:public static final
- 建议:自己手动给出
B 构造方法:接口没有构造方法
C 成员方法:只能是抽象方法 - 默认修饰符:public abstract
- 建议:自己手动给出
类于类,类与接口,接口与接口的关系
A 类于类:
继承关系,只能单继承,可以多层继承
B 类与接口:
实现关系:可以单实现,也可以多实现
并且还可以在继承一个类的同时实现多个接口
C 接口与接口(使用extends):
继承关系,可以单继承,也可以多继承
四种权限修饰符的测试(掌握)
内部类访问特点
a:内部类可以直接访问外部类的成员,包括私有。内部类之所以能获取到外部类的成员,是因为他能获取到外部类的引用外部类名.this
b:外部类要访问内部类的成员,必须创建对象。
外部类名.内部类名 对象名 = 外部类对象.内部类对象;(例如:Outer.Inner inner =new Outer(). new Inner()
内容总结
以上是互联网集市为您收集整理的JavaSE基础一全部内容,希望文章能够帮你解决JavaSE基础一所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。