java 基础--理论知识
变量分:
局部变量
全局变量
-----------------------------------------------------
变量三大特性【标识符,初始值,作用域】
定义变量:
语法:[访问修饰符] 数据类型 变量名
例如:public int age;
如何为变量赋值和取值?
age=10;
System.out.println(age);
----------------------------------------------------------
常量:在程序运行期间不会改变
关键字:final
语法:[访问修饰符] [static] final 数据类型 常量名
例如:final double PI=3.14;
注意事项:
1:使用final关键字定义常量
2:常量必须有值
3:建议常量名全部大写
-----------------------------------------------------
定义常量时,通常会使用static关键字修饰
public static final int WIDTH=5;
public final static int WIDTH=5;
-----------------------------------------------------
Java数据类型分类:数值类型,非数值类型
还可以分为原始类型和对象类型
-----------------------------------------------------
原始类型(基本类型):
byte, short, int, long, float, double, char, boolean
-------------------------------------------------------------------
对象类型(引用类型)
String, 类, 接口, 数组, 泛型, 枚举, 集合
---------------------------------------------------
数值类型
整数:
byte:(-128---127)32b
short:(-32768----32767)
int:-2的31次方---2的31次方-1[32]
long:-2的63次方---2的63次方-1[64]
非整数:
float:-2的31次方---2的31次方-1[32]
float:标识符为f,例如:8.5f
最多保留6位小数,从第7开始四舍五入
------------------------------------------------
double:-2的63次方---2的63次方-1[64]
标识符为:d,小数默认类型为double
最多保留16位小数,从第17开始四舍五入
非数值类型
char
String
boolean
类,接口.......
---------------------------------
package:包
========================================================================》》
数据类型转换
---------------------------------------
自动类型提升:(小到大)
1:byte和byte类型构成表达式时,自动类型提升到int
2:在一个表达式里面,如果出现了int,float,double
或者其他数值类型,自动提升到该表达式最高类型
byte+byte>int
int+int>int
float+float>float
double-double>double
int+float>float
int+double>double
int+float+double>double
int+long+double>double
--------------------------------
强制类型转换(大到小)
int>byte
float>int
double>float>int.....
long>int>short
强制类型转换可能导致丢失数据
语法:
(目标类型)原类型
前提:数值类型
--------------------------------
int->Integer
char->Charactor
float->Float
double->Double
short->Short
long->Long
boolean->Boolean
byte->Byte
---------------------------------
Java运算符
赋值运算符:从右向左
=,+=,-=,/=,%=
算术运算符
+,-,*,/,%,++,--
逻辑运算符
&&-->A and B->A,B同时为真则为真,如果A已经false,B不执行
||-->A or B->A,B一边为真则为真,如果A已经true,B不执行
!-->not A->如果A是真,则转成假
========================================================================》》
1:数组的概念
在内存中连续存储多个相同类型的线性数据结构
特点:
A:连续存储
B:存储的数据类型相同
C:通过下标访问每一个数组元素,从0开始
----------------------------------------------------
2:为什么要使用数组?
基本的变量只能存储单个数据,如果要存储
多个数据,需要定义多个变量,不便于操作
与管理
-----------------------------------------------------
3:如何定义一维数组?
基本方式:
数据类型[] 数组名;
数组名=new 数据类型[长度];
其他方式
A:数据类型[] 数组名=new 数据类型[长度];
B:数据类型[] 数组名={值1,值1,值1....};
C:数据类型[] 数组名=new 数据类型[]{值1,值2,.....};
其中B,C都是在声明数组的同时进行了初始化操作
------------------------------------------------------------
如何使用数组?
赋值:数组名[下标]=值;
取值:数组名[下标]
注意:数组下标从0开始,最大下标为数组length-1
例如:int[] ages={3,4,5,6,7};
ages[0]-->3;//0最小下标
ages[4]-->7;//4最大下标
获取数据最大下标可以使用属性length-1
System.out.println("ages数组最大下标:"+(ages.length-1));
========================================================================》》
1:对象的概念
现实中具有特定属性和行为的所有实体
都是对象
一切皆对象
要研究一个对象,从对象拥有的属性和方法开始
实体---->对象
特征---->属性
行为---->方法
------------------------------------------
2.类的概念
具有相同属性共同行为的一组对象的集合
-----------------------------------------
类是从一系列对象中抽取共同点而产生的
一种逻辑上的概念
-----------------------------------------
类和对象之间的关系
1:类是对象的模板,集合【定义了所有对象的共同特征和行为】
2:对象是类的一个具体实现
--------------------------------------
如何创建对象?
类 对象名=new 类();
---------------------------------
Object类--->所有类的根类
toString();
---------------------------------
注意:
1:类的成员属性和方法必须由对象来使用
2:类的成员属性可以被类的成员方法直接调用
---------------------------------
类里面所有非static修饰的属性和方法
都是成员属性和成员方法
----------------------------------
在同一个类中,静态属性和静态方法在任何
地方可以直接使用,不需要构建对象
========================================================================》》
1:封装的概念
将事物包装起来,隐藏事物的实现细节即为封装
2:为何需要封装?
A:封装将事物统一收集,便于事物的管理
B:封装将事物细节进行隐藏,限制了事物的访问
3:有哪些地方体现了封装?
电脑主机箱,教室,包,类
-------------------------------------------------------
在Java中,针对每一种基本数据类型,都提供了
一个封装类来进行对这些基本类型的管理和操作
int-->装箱-->Integer-->拆箱-->int
char-->装箱-->Charactor
float-->Float
double-->Double
byte-->Byte
boolean-->Boolean
short-->Short
long-->Long
-----------------------------------
定义类的属性时,如果直接暴露所有属性是不合理
也不安全的,为此,我们需要对属性进行封装
隐藏具体细节,即保证了合理性,也利于程序安全
--------------------------------------
如何将属性封装起来?
将类中属性私有化,提供公有的方法访问这些私有的属性
[特点:不能直接访问属性]
私有化:只能自己独自享用
公共方法:谁都可以用
-----
Java中提供了一组访问修饰符来限制事物的访问
public 公共的 能被所有地方访问
private 私有的 只能被同一个类访问
protected 受保护的 同一个包可以访问,不同包的子类可以访问
[default] 默认的 同一个包可以访问
--------------------------
Java三层范围
A:同一个类
B:同一个包
C:不同包
========================================================================》》
一:什么样的方法是构造方法?
1:方法名与类名相同
2:没有返回类型[void也是一种返回类型]
二:构造方法有什么作用?
初始化类的成员变量
【当实例化一个对象时,为这个对象的属性赋于初始值】
三:如何调用构造方法?
使用关键字new
new Student();代表调用不带参数名称为Student的构造方法
new Student("abc",23);代表调用带两个参数名称为Student的构造方法
在一个类中,可以出现多个名称相同,但是参数不同
的构造方法。
四:this关键字
this代表当前对象的一个引用
this关键字不能在静态(static)方法里面使用
---------------------------------------------------
在Java中,同一个类中不允许出现相同的方法
什么样的方法是相同方法?
1:方法名相同,2:参数相同[参数的个数,类型,顺序]
========================================================================》》
一:什么叫方法的重载?
在一个类中出现多个方法名相同参数不同的方法———
我们称之为方法重载 (普通方法和构造方法都可以重载)
二:方法的重载有什么好处呢?
1.提高程序的灵活度
2.有利于后期项目的维护与管理
3.符合软件设计中的开闭原则
三:什么样的几个方法我们称之为方法的重载?
1.同一个类
2.方法名相同
3.参数不同(个数,类型,顺序)
========================================================================》》
1:继承的概念
父类的特征和属性传递给子类,我们称之为子类
继承父类。
2:什么样的关系才能满足继承?
A:两个类之间满足is a的关系
B:两个类之间存在层次关系
3:使用继承有什么好处?
write once,only once:写一次,只写一次
提高了代码的复用性
4:Java中使用什么关键字实现两个类之间的继承?
extends
-------------------------------------------------
* 1:父类 对象名=new 父类();自己能调用自己的方法和属性
* 2:子类 对象名=new 子类();可以调用自己特有方法和属性,也能调用继承到的方法和属性, 如果子类和父类出现相同方法,采用就近原则调用子类里面的方法
* 3:父类 对象名=new 子类();
* 调用属性和方法时,先看父类有没有,如果没有,直接出错
* 如果父类有,则看子类有没有对这个方法进行改变,如果
* 有,则使用子类的,如果没有,则使用父类的
--------------------------------------------------
方法的重载:overload(多个并存)
方法的重写:override(覆盖)
---------------------------------
什么叫方法的重写?
【在子类中,子类对父类中继承到的方法的改变称之为方法的重写】
方法重写的标准
1:父类与子类之间
2.重写的方法要求(方法名、参数、返回值类型)和被重写方法一致
3.重写的方法要求访问修饰符要(大于或等于)被重写的方法
例如:父类中有一个sayHello方法
void sayHello(String){
}
子类重写父类中sayHello方法应该有如下形式
A:
void sayHello(String){
}
B:
public void sayHello(String){
}
--------------------------------------------------
this:当前对象的引用
super:当前对象的父类对象引用
当在子类中需要调用父类的方法和属性时,可以用
super关键字调用
----------------------------------------------------
两个类一旦建立继承关系,当实例化子类时
默认先调用父类中一个不带参数的构造方法
实例化一个父类对象,然后再实例化子类对象
------------------------------
super()方法用来调用父类的构造方法
例如:super()调用父类不带参数的构造方法
super("abc")调用父类带一个字符串类型参数的方法
super("bac",23)调用父类带两个参数的构造方法
super()必须是在子类构造方法(第一行)调用
java 基础--理论知识的更多相关文章
- Java基础语法知识你真的都会吗?
第一阶段 JAVA基础知识 第二章 Java基础语法知识 在我们开始讲解程序之前,命名规范是我们不得不提的一个话题,虽说命名本应该是自由的,但是仍然有一定的"潜规则",通过你对命名 ...
- Java基础入门知识
Java编程入门知识 知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java ...
- Java 基础部分知识复习
面向对象的特征: 继承.封装和多态 封装 : 把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象去操作.对不可信的信息进行隐藏. 继承: 它可以使用现有类的功能,并在无需重新编 ...
- Java基础小知识(一)
序言:“不积跬步,无以至千里.不积小流,无以成江海.”每一个庞大的知识架构都是由无数个小知识点慢慢积累起来的,没有量变的积累,就没有质变上的飞跃,成功往往离不开积累. 今天就和大家分享一些我在学习J ...
- java基础小知识
1.1常量: 基本数据类型常量 字符常量 整数常量的表现形式:一进制的形式来表示(二进制,八进制,十进制,十六进制) 生活中:十进制(0-9) ,星期(七进制(0-6)) ,时间(十二进制(0-11 ...
- java基础语法知识
1.用消息框显示加法计算结果 package plusdialog; import javax.swing.JOptionPane; // import class JOptionPane publ ...
- Java基础小知识1——分别使用字节流和字符流复制文件
在日常使用计算机过程中经常会涉及文件的复制,今天我们就从Java代码的角度,看看在Java程序中文件复制的过程是如何实现的. 1.使用字节流缓冲区复制文件 示例代码如下: import java.io ...
- Java基础小知识笔记
1. Integer转进制的一个类2. toBinaryString,toOctalString,toHexString.(转为二进制,八进制,十六进制的方法)3. 如果·数据的大小没有超过byte/ ...
- Java基础重点知识之欣欣向然
题目: 第一题:二重循环: public class Text01 { //完成歌曲排序的效果 public static void main(String[] args) { String[] zi ...
随机推荐
- synchronized和lock以及synchronized和volatile的区别
synchronized和volatile区别synochronizd和volatile关键字区别: 1. volatile关键字解决的是变量在多个线程之间的可见性:而sychronized关键字解决 ...
- 3. tomcat 内存设置
-Xms512m -Xmx1024m -XX:PermSize=512M
- Rhythmk 一步一步学 JAVA(6): JSP 语法学习笔记
1.修改JSP页面模版: 找到MyEclips安装目录,搜索“Jsp.vtl”,找到该文件修改编码,以及一些不需要用到的代码. 2.查找项目生成的Servlet文件路径: 查看当前项目父级目录搜索 . ...
- leetcode22
public class Solution { public IList<string> GenerateParenthesis(int n) { List<string> l ...
- python 的包的导入
已经写过一篇包的导入了,最近又遇到了点问题,所以想把这些再搞的明白点就又试了试 代码结构如下 在test目录下,有Admin包,home包,在home下有它的子包foo 各个文件代码如下 admins ...
- linux 权限之acl
查看分区ACL权限是否开启 centos 6 dumpe2fs -h /dev/sda1(是查看ext2/ext3/ext4 文件系统信息的命令) centos 7 xfs_growfs /dev ...
- 修改CKplayer.js 源码解决移动端浏览器全屏不能限制快进的问题
原文地址:https://www.cnblogs.com/jying/p/9642445.html,转载请说明出处. 最近项目需要播放视频且限制未观看部分的快进功能,找了两款js插件ckplayer和 ...
- 数组中出现次数超过一半的数字(python)
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- mysql修改删除You can't specify target table for update in FROM clause的问题
表中出现重复数据,需要删除重复数据,只保留一条 DELETE FROM crm_participant WHERE id IN ( SELECT c.id cid FROM crm_participa ...
- SSM框架整合的其它方式
---------------------siwuxie095 SSM 框架整合的其它方式 1.主要是整合 Spring ...