JAVA 学习笔记

Wesley13
• 阅读 527

源文件定义类注意事项:

  1 一个源文件定义多个类时,只能有一个public类,其余的均为非public类

  2 源文件的名称须和public类的类名保持一致

  3 如果一个类定义在某个包中,那么pachage语句应该在源文件的首行

  4 如果源文件包含import 语句,那么应该放在package语句和类定义之间,如果没有package 语句,则应该放在源文件最前面

一个类中可包含以下类型变量:

  1 局部变量 方法内

  2 成员变量  类内方法外

  3 类变量  类内方法外,且声明为static 类型

构造方法的定义方式:

  方法名和类名相同,如果不提供定义,则java编译器会为该类提供一个默认的构造方法,创建一个对象时,至少会调用一个构造方法,一个类可以有多个构造方法

创建一个类的对象

  声明 + 实例化 + 初始化      例:

  类名 实例名 =  new 类名(参数)

JAVA包 

  主要是用来对类进行分类的

引用类型

  引用类型的变量类似于c的指针,引用类型指向一个对象,变量一旦声明后,类型就不能改变,对象和数组都是引用数据类型,所有引用类型的默认值均是null,一个引用变量可以用来引用任何与之兼容的类型

JAVA 常量

  常量在运行时不可修改,使用 final 关键字修饰即可   final double PI = 3.1415926 

  常量名可用小写,但是为了便于识别,使用大写

自动类型转换

  涉及到不同的数据类型运算时,转换从低级到高级

  低级                                                                   高级

  byte,short,char—> int —> long—> float —> double

转换规则:

1 不能对布尔值进行类型转换

2 不能把对象类型转换为不相关类的对象

3 在把容量大的类型转换为容量小的类型时必须使用强制类型转换

4 转换过程中,可能存在溢出或者精度损失

5 浮点数到整数的转换是通过舍弃小数,不是四舍五入

强制类型转换

1 转换类型必须兼容

2 格式   (type)value    type 是要强转类型后转换的数据类型

隐藏的强制类型转换

1 整数的默认类型是int

2 浮点型不存在这种情况 因为浮点型数字后面需跟上f或者F

JAVA 局部变量

  局部变量没有默认值,声明后必须初始化后才可以使用

类变量或静态变量

  类中以static 关键字声明 ,方法以外,一旦初始化后,数值不可改变

  静态变量在第一次访问时创建,程序结束时销毁 

  静态变量储存在静态存储区

常量

  常量是指声明为public/private,final和static类型的变量。常量初始化后不可改变。

访问修饰符

  default  什么都不写,同一包内可见

  private 同一类内可见

  public 对所有类可见

  protected 对同一包内的类和所有子类可见

非访问修饰符

  static 用于声明静态变量(类变量)静态方法

  final 修饰变量时必须显式指定初始值,修饰方法时,可以被子类继承,不可以被重写

  abstract  修饰类,抽象类不能实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充

  synchronized 修饰的方法,同一时间只能被一个线程访问

  volatile 修饰的成员变量,在每次被线程访问时,会强制从共享内存重新读取该成员变量的值,并在发生变化时,强制改写内存,这样任何时刻,两个不同的线程总是看到某个成员变量的同一个值

java的类支持单继承,不支持多继承,支持多重继承

  继承关键字 extends  和 implements  

  extends 单继承

  implements 可变相实现多继承,多个继承接口,非继承类,且继承接口的方法必须重写一遍,并不方便,不重写会报错,不推荐使用

类中的静态main方法 类似于python 中的main方法,是独立于类本身的,不能使用this关键字,必须先示例化一个对象,再去调用该对象的某个方法或者属性,而类方法,或者成员方法以及构造方法中可以使用this关键字,this 关键字可以用来解决实例变量与局部变量重名发生的冲突

super 关键字

  主要用于继承时,调用父类的某个方法,例如,子类重写了父类的eat() 方法,super.eat() 实现调用父类的eat() 方法,this.eat() 实现调用重写的eat()方法,被final 关键字修饰的类是不可继承的

重写 发生在类继承关系时,重载发生在同一个类中相同的方法名,不同的参数

JAVA接口

interface 是抽象方法的集合,接口不是类,编写方式和类相似,类是用来描述对象的属性和方法,接口包含类要实现的方法

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java常用类(2)
三、时间处理相关类Date类:计算机世界把1970年1月1号定为基准时间,每个度量单位是毫秒(1秒的千分之一),用long类型的变量表示时间。Date分配Date对象并初始化对象,以表示自从标准基准时间(称为“历元”(epoch),即1970年1月1日08:00:00GMT)以来的指定毫秒数。示例:packagecn.tanjian
Wesley13 Wesley13
3年前
java基础常见面试题,这是一篇超长的随笔!!!
1\.Java基础部分.......................................................41、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?..42、Java有没有goto?.................................................4
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Javascript中,实现类与继承的方法和优缺点分析
Javascript是一种弱类型语言,不存在类的概念,但在js中可以模仿类似于JAVA中的类,实现类与继承第一种方法:利用Javascript中的原型链1//首先定义一个父类23functionAnimal(name,age){4//定义父类的属性5thi
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这