Math 类Math 类中所有的属性和方法都是静态的, 也就是说全露都可以可用 Math. 属性和 Math. 方法名调用属性和方法.
属性
static double E: 比任何值都接近 e 的 double 值
static double PI: 比任何值都接近 pi 的 double 值
几个常用的方法
ceil(double a) : 返回大于等于这个参数的整数
Math.ceil(-12.1) 返回 - 12 ; Math.ceil(12.8) 返回 13;
floor(double a): 返回小于等于参数的整数;
Math.floor(-12.1) 返回 - 13;Math.floor(12.9) 返回 12;
rint(double a): 返回接近参数并等于某一整数的 double 值
Math.floor(-12.1) 返回 - 12;Math.floor(12.9) 返回 13;
random(): 返回 [0,1) 之间的 double 值;
随机数获得随机数的 3 种方法
通过 System.currentTimeMillis() 获取 ...
字符串操作在编程中我们会大量使用, 所以掌握字符串相关类对我们来说很重要.Java 为我们提供了 3 种操作字符串的类. 由于 String 类的特殊, 有必要了解一下 Java 运行时内存的概念, 才能更好的理解字符串相关类的底层操作.
Java 中内存知识在反射中我们学到, 对于每一个被 JVM 加载到内存中的类, 都会在方法区保存一份这个类的信息;包括:
类的基本信息
类的全名, 直接父类的全民
该类的接口
该类的访问修饰符
类的详细信息
运行时常量池 –> 字符串, 常量, 类名和方法名常量.
字段信息 –> 字段名, 类型, 修饰符
方法信息 –> 方法名, 返回值类型, 参数类型, 修饰符, 异常, 方法的字节码
静态变量 –> 在方法区中的静态区保存被类的所有实例共享的变量和静态快
到类 classloader 的引用
到类 class 的引用 JVM 为每一个被加载到内存的类型创建一个 class 实例, 用实例代表这个被加载的类
由此引出反射的概念:在加载类的时候, 加入方法区的所有信息, 最后都会影城 Class 类的实例, 代表 ...
概述
Java 异常是 Java 提供的一种识别及响应错误的一致性机制。
Java 异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。
在有效使用异常的情况下,异常能清晰的回答 what, where, why 这 3 个问题:
异常类型 –>” 什么” 被抛出;
异常堆栈跟踪 –>” 在哪” 抛出;
异常信息 –>” 为什么” 会抛出;
Throwable 类
Throwable 是 Java 语言中所有错误或异常的超类。Throwable 包含两个子类: Error 和 Exception。它们通常用于指示发生了异常情况。Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等信息。
ExceptionException 及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。
RuntimeExceptionRuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。编译器不会检查 ...
new要谈 new 关键字, 就必须先说说构造方法, 它们 2 个就是一对好基友.
构造方法定义
无参构造方法: 访问修饰符 类名(){ }
带参构造方法 访问修饰符 类名(参数列表){ }
说明
构造方法可以被重载;
没有返回类型 (void 也算返回类型, 只是没有返回值);
方法名和类名必须一样;
如果不写, 系统会默认提供一个无参构造方法;
如果写了, 系统就不会提供任何构造方法;
子类不能继承父类的构造方法;
接口没有构造方法;
作用产生对象new 一个对象的时候构造器所要做的事
创建空间;
划分属性;
初始化值;
执行构造方法内的语句;
实例化一个对象用 new 关键字实例化一个对象时, 所用做的事:People p = new People();
加载 People,class 文件进入内存;
在栈内存为 p 变量申请一个空间 (4 个字节);
在堆内存为 People 对象申请空间 (大小为类中所有成员变量的大小);
对类中的成员变量进行默认初始化;
(如果有) 对类的成员变量进行显示初始化;
有构造代码块, 先执行 ...
public
谁都可以操作
当在方法或属性前面显显式的给定 public 限定符的时候, 其具有该权限控制.
public 权限是最为宽松的一种权限控制, 对包的内, 外部都是完全可见的.
java 最多只允许一个 java 文件中出现一个 public 类.(该类向外间提供接口, 并与该 java 文件的名称完全一致)
当一个 java 文件中无一个 public 类时, 表明其仅供包访问, 对外界不可见.
注意: 类只有包访问权限和 public 访问权限.
默认访问修饰符 (friendly)
同一个包内可以操作
当方法或属性未给定访问修饰符时, 其默认具有该权限.
具有该权限的方法和成员, 其包内是完全可见的, 而包外不可见.
1234567891011121314//Animal.java和Test.java在同一包下;//Animal.javapublic class Animal{ void eat(){ System.out.println("Animal吃东西的方法"); } ...
话说有这样一个小例子:MICROS_PER_DAY 表示一天的微秒数MILLIS_PER_DAY 表示一天的毫秒数然后下面例子的结果是多少呢?
1234567public class Test3 { public static void main(String[] args) { final long MICROS_PER_DAY = 24 * 60 * 60 * 1000 * 1000; final long MILLIS_PER_DAY = 24 * 60 * 60 * 1000; System.out.println(MICROS_PER_DAY / MILLIS_PER_DAY); }}
So easy数据类型为 long , 很容易保存这两个乘积不产生溢出.因此, 结果肯定是 1000!
but…..结果是:
解释:为什么答案与我们想象不一样呢?因为数据溢出了…你在逗我? 但我没学过 java?long 能表示 -2 的 63 次方到 2 的 63 次方 - 1 的整数.数都数不过 ...
下面的方法意图确定它那唯一的参数是否是一个奇数. 这个方法能够正确运转吗?
1234567891011121314151617import javax.swing.JOptionPane;public class Test1 { public static void main(String[] args) { String s = JOptionPane.showInputDialog("请输入一个整数"); int a = Integer.parseInt(s); System.out.println(a); if (isOdd(a)) System.out.println("奇数"); else { System.out.println("偶数"); } } public static boolean isOdd(int i) & ...
新时代码农
未读
理解结构化编程和面向对象编程的区别
掌握如何编写 java 类
掌握如何实例化对象
掌握如何访问对象的属性和方法
理解 this 引用
掌握如何使用包组织类
结构化编程按照步骤来编写代码围绕要解决的任务来设计
面向对象编程 (Object Oriented Programming)程序不是围绕要解决任务来设计, 而是围绕要解决的问题中的对象来设计建立对象模型, 将问题域化为不同的对象去处理
万物皆对象, 对象因关注而产生
对象组成
属性
对象身上的值数据
行为
该对象能够做什么
类是对象的抽象, 对象是类的实例类是具有相同属性和行为的一组对象的抽象
面向对象特点
封装
继承
多态
方法重载
方法覆盖
基本数据类型和引用类型的传递的特点
值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。
引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象 (或数组),这时实际参数与形 ...
被访问被调用的范围
public : 全部
默认 : 同包
protected : 同包或有继承关系的类
private : 只有同类
在 A 类中定义属性和方法:
public: 这个类的实例化对象可以访问;
默认: 如果在同包下定义一个主类, 然后在主类的主方法里面 new A 的一个对象出来, 则这个对象可以访问被默认修饰的属性和方法;
protected: 在同一个包下的类中 new 的 A 类对象和继承了 A 类的相同或不同包下的子类中 new A 类对象, 这个对象能调用 A 类中所有的属性和方法 (不同包下没有继承关系的类不能访问)
private: 只有这个类中的属性和成员方法能访问
geter 和 setter 更深入理解
当把类的属性和方法访问权限设置为 private 时, 一般都提供上面 2 个公共方法; 在这 2 个方法体内, 可以添加一些限制代码; 比如说 setter 方法, 需要用户输入账号密码才有权限修改 getter 也可以这么做, 还可以在返回值的时候做一些动作; 这就是隐藏.
也可以用 private 修饰 setter 方法, 那么这个属 ...
新时代码农
未读
数组是一个连续的内存空间, 存储了多个相同数据类型的数据, 是对这些数据的统一管理; 里面的元素可以是任何类型, 包括基本类型和引用类型;
数组中的元素的变量是引用类型, 数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量;
数组变量存放的是连续空间第一个元素的地址;
为什么数组下标要从 0 开始
数组是一段连续的空间,要求 a[i] 就是求它的地址,然后找到它。如果从 0 开始,则 a[i] 的地址 = 首地址 + i _ 每个数据所占的长度;如果从 1 开始, 则 a[i] 的地址 = 首地址 + (i-1)_ 每个数据所占的长度
数组中变量的类型 , 就是声明数组时定义的类型.
java 中声明数组是不能指定长度; 数组创建后, 长度不可变化.
java 中数组不能越界, 否则编译器会报数组越界错误.(ArrayIndexOutOfBoundsException)
数组存储在 Java 堆的连续内存空间,所以如果你创建一个大的索引,你可以有足够的堆空间直到抛出 OutofmemoryError,因为请求的内存大小在连续的内存空间不可用。
数组创 ...
新时代码农
未读
在一条计算机上由软件或硬件模拟的计算机或硬件模拟的计算机. JVM 读取并处理经编译后的平台无关的字节码 class 文件
java 编译器针对 java 虚拟机产生的 class 文件, 因此是独立于平台的
java 解释器负责将 java 虚拟机的代码在特定的平台上运行
类的定义12345public class HelloWorld { public static void mian(String[] args) { System.out.println("HelloWorld"); }}
[public] class 类名称 {}对于类的定义有两种形式:
public class 定义: 内名称必须和文件名称一致, 在一个 java 文件里只能有一个 public 修饰的类
class 定义: 类名称可以和文件名不一致, 但是生成的是 class 定义的名称, 在一个 java 程序之中可以同时存在多个 class 的定义, 编译之后会分为不同 class 文件.
...
新时代码农
未读double > float > long > int > short > byteA. 小类型转大类型是自动转换 (向上转型);B. 大类型转小类型会发生精度丢失, 也有可能发生数据溢出, 所以编译器要求我们必须强制转换, 否则会有编译错误.
123456789101112131415int i = 1 , j ; //正确:对于 j 这里只是定义,没有初始化.float f1 = 0.1 ; //错误:在java中,有小数的数值默认为double类型,所以结果为double类型,看B解释float f2 = 123; //正确: 结果为int类型,自动转换成float类型,A解释double d1 = 2e20,d2 = 123; //正确:A解释byte b1 = 1,b2 = 2 ,b3 = 129; //错误: b1,b2没有错,A解释;b3超过范围.j = j + 10; ...
Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于 PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
背景Java 是由 Sun Microsystems 公司推出的 Java 面向对象程序设计语言(以下简称 Java 语言)和 Java 平台的总称。由 James Gosling 和同事们共同研发,并在 1995 年正式推出。Java 最初被称为 Oak,是 1991 年为消费类电子产品的嵌入式芯片而设计的。1995 年更名为 Java,并重新设计用于开发 Internet 应用程序。用 Java 实现的 HotJava 浏览器(支持 Java applet)显示了 Java 的魅力:跨平台、动态 Web、Internet 计算。从此,Java 被广泛接受并推动了 Web 的迅速发展,常用的浏览器均支持 Javaapplet。另一方面,Java 技术也不断更新。Java 自面世后就非常流行,发展迅速,对 C++ 语言形成有力冲击。在全球云计算和移动互联网 ...
新时代码农
未读计算机程序(Computer program),也称为软件(software),简称程序(Program)是指一组指示计算机或其他具有信息处理能力装置每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。就跟我们日常生活中做饭一样,一道菜的完成需要从买菜,洗菜,炒菜,出锅等步骤完成。程序:为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合,通过程序实现人机对话的过程
进制转换什么是二进制二进制是计算技术中广泛采用的一种数制。二进制数据是用 0 和 1 两个数码来表示的数。它的基数为 2,进位规则是 “逢二进一”,借位规则是 “借一当二”,由 18 世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用 “开” 来表示 1,“关”来表示 0。 [百度百科]
特点优点数字装置简单可靠,所用元件少;只有两个数码 0 和 1,因此它的每一位数都可用任何具有两个不同稳定状态的元件来表示;基本运算规则简单,运算操作方便。
缺点用二进制表示一个数时,位数多。因此实 ...