JAVA基础(一)—— 基础类型与面向对象
JAVA基础(一)——基础类型与面向对象
1 数据类型
基本类型
byte short int long float double boolean char n 8 16 32 64 32 64 true/false 16 字节数 1 2 4 8 4 8 2 默认值 0 0 0 0L 0.0f 0.0d false 0 范围:[-2n-1,2n-1-1]
- byte到double都是有符号的表示数值类型
- byte short float 在大型数组中节省空间
- float double 浮点数不能精确表示
引用类型
指向一个对象,默认值为null
Site site = new Site("Runoob")
类型转换
- 自动转换:从低级到高级
- 从低到高为byte,short,char—> int —> long—> float —> double
- 强制转换:从高级到低级
- 转换过程可能溢出或损失精度,浮点数到整数的转换是舍弃小数,而不是四舍五入
- 写法:(int)23.7
- 自动转换:从低级到高级
类表示
- Character类是char的类,方便要使用char对象时使用
- Character ch = new Character('a');
- Character ch = ‘a’;
- char c = ch;
- Number类的各种子类Integer、Long、Byte、Double、Float、Short
- Integer b = 1;
- Integer c = new Integer(1);
- Integer.parseInt Double.parseDouble Long.parseLong String.valueOf
- Character类是char的类,方便要使用char对象时使用
2 常量
- 常量不能修改,一般大写,用final修饰
- 数值前缀:0表示8进制,0x表示16进制
3 转义字符
| \n | \t | \b | \0 | \r | \f | \" | \' | \\ | \s |
|---|---|---|---|---|---|---|---|---|---|
| 换行 | 制表符 | 退格 | 空 | 回车 | 换页 | 双引号 | 单引号 | 反斜杠 | 字符串 |
4 运算符
| 算术 | + | - | * | /(取整) | % | ++ | -- |
|---|---|---|---|---|---|---|---|
| 关系 | == | != | >= | <= | |||
| 位 | & | | | ~(非,波浪线) | ^(异或) | <<(左移) | >>(右移) | >>> (无符号右移) |
| 逻辑 | && | || | !(非) | ^(异或) | |||
| 赋值 | += | -= | *= | /= |
区别
- &与|左右两边的式子一定会执行(比较笨)
- &&与||只要左边能得到结果,右边就不会执行(比较聪明)
注意
- 2b不代表2*b
- 3<<2表示3左移2位
- 异或相同为0,不同为1
其它
条件运算符
- b= (a==1) ? 1 : 0
instanceof 运算符,检查对象是否是特定类型
String name = "James";
boolean result = name instanceof String; Vehicle a = new Car();
boolean result = a instanceof Car;
5 语法
if(){}
else if(){}
else{}
switch(){
case :
break;
default :
}
while(){} //break,continue
do{}while()
for(){} //增强for for(:){}
6 enum枚举变量
//枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的 bug。
public enum Result {
X_WIN,O_WIN,DRAW,GAMING
}
Result result = Result.DRAW;
class FreshJuice {
enum FreshJuiceSize{ SMALL, MEDIUM , LARGE }
FreshJuiceSize size;
}s
FreshJuice juice = new FreshJuice();
juice.size = FreshJuice.size.MEDIUM ;
//Enum.IsDefined()方法,返回枚举中是否存在该值
7 面向对象
一个源文件中只能有一个public类,可以有多个非public类
修饰符
public private(不能修饰类) protected(不能修饰类) 对所有包所有类可见 只在同一类可见 对同一包的类和基类的所有子类可见 - protected
- 子类和基类在同一包:总之对同一包可见
- 子类和基类不在同一包:子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
- 方法继承规则:
- 父类中声明为 public 的方法在子类中也必须为 public。
- 父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private。
- 父类中声明为 private 的方法,不能够被继承
- protected
static修饰符
独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝
静态变量不会随对象销毁
public class Variable{
static int allClicks=0;
String str="hello world"; // 成员变量:对象被销毁的时候销毁 public void method(){
int i =0; // 局部变量:类的方法中的变量,当它们执行完成后,变量将会被销毁。
}
}
静态方法不能使用类的非静态变量
访问直接使用 classname.variablename 和 classname.methodname
final修饰符(用来防止被修改)
- 变量:不可被修改
- 方法:不可被修改,子类可继承,但不可修改
- 类: 不可被修改
abstract修饰符
抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。
抽象类可以包含抽象方法和非抽象方法。
- 只要类包含抽象方法,该类必须声明为抽象类。
- 抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。
- 抽象方法的声明以分号结尾,例如:public abstract sample();。
继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。
abstract class Caravan{
private double price;
private String model;
private String year;
public abstract void goFast(); //抽象方法
public abstract void changeColor();
}
synchronized修饰符
方法同一时间只能被一个线程访问
public synchronized void showDetails(){}
volatile修饰符
- volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。
- 而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。
- 这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
多态继承 wait………………
JAVA基础(一)—— 基础类型与面向对象的更多相关文章
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- Java 基础复习 基础数据类型与包装器类型
Java 基础 基础数据类型与包装器类型 基础数据类型 java 中包含哪些基础数据类型,默认值分别是多少? 基础数据类型 byte short int long double float char ...
- Java基础之枚举类型Enum的使用
Java基础之枚举类型Enum的使用 定义 public enum AccruedCleanEnum { SPREAD("1","发票"),OTHER(&quo ...
- 基础篇:深入解析JAVA泛型和Type类型体系
目录 1 JAVA的Type类型体系 2 泛型的概念 3 泛型类和泛型方法的示例 4 类型擦除 5 参数化类型ParameterizedType 6 泛型的继承 7 泛型变量TypeVariable ...
- java基础04-数据类型扩展及面试题
java基础04-数据类型扩展及面试题讲解 public class demo02 { public static void main(String[] args){ // 一.整数拓展: 进制 二进 ...
- Java基础01 ------ 从HelloWorld到面向对象
Java是完全面向对象的语言.Java通过虚拟机的运行机制,实现“跨平台”的理念.我在这里想要呈现一个适合初学者的教程,希望对大家有用. "Hello World!" 先来看一个H ...
- Java基础01 从HelloWorld到面向对象(转载)
Java是完全面向对象的语言.Java通过虚拟机的运行机制,实现“跨平台”的理念. "Hello World!" public class HelloWorld{ publi ...
- java字符串以及字符类型基础
介绍一下java字符集和字符的编码方式, 首先要区分一下字符集和字符编码.所谓的字符集 类似于unicode,GB2312,GBK,ASCII等等.因为一开始只有26个英文字母需要 编一下号.所有用下 ...
- Java基础_枚举类型
作用:让数据更简洁,更易读,增加代码可读性. 为了用1,2,3,4,5分别表示老师,学生,小组,班主任,后勤,可以直接设置一个变量,让roleType = 1,但这样写代码可读性差. 也可以定义一个成 ...
随机推荐
- 【疯狂挖坑】linux服务器尝试中的问题(nohup等)
实验环境:Ubuntu 16.0.4 首当其冲: 1. nohup使用及究极重要事项 我们用服务器肯定都是想在服务器存点什么.让服务器帮我们干点什么,这时候就需要nohup(no hang up)提供 ...
- C++的智能指针你了解吗?
- A - A Supermarket (贪心, 并查集)
超市里有n个产品要卖,每个产品都有一个截至时间dx(从开始卖时算起),只有在这个截至时间之前才能卖出并且获得率润dy. 有多个产品,所有可以有不同的卖出顺序,每卖一个产品要占用1个单位的时间,问最多能 ...
- ACwing 258. 石头剪子布
258. 石头剪子布 题目传送门 题意挺好理解,但是当我看样例的时候就傻了.不是说好的只有一个裁判的吗?出现矛盾的时候该怎么判定裁判? 分析 观察这个数据量就会发觉是有猫腻的,直接从正面求出裁判并不是 ...
- 【NOIP 2015 D1 T2】信息传递(图论--带权并查集/bfs)
题目:有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学.游戏开始时,每人都只知道自己的生日.之后每一轮中, ...
- HDU 1565 方格取数 状压dp
题目: 给你一个n*n的格子的棋盘,每个格子里面有一个非负数. 从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大. Input 包括多 ...
- MySQL8.0数据库出现的问题——外码创建方式、外键约束两个引用列不兼容问题、check约束问题、用触发器代替check约束、关键字DELIMITER、删除添加索引、删除添加外键约束、和一些数据库方面的操作
一.首先先说一下我们都需要建立那些表 mysql> CREATE TABLE IF NOT EXISTS `student`( -> `sno` CHAR(8) NOT NULL, -&g ...
- 用了很多年Dubbo,连Dubbo线程池监控都不知道,觉得自己很厉害?
前言 micrometer中自带了很多其他框架的指标信息,可以很方便的通过prometheus进行采集和监控,常用的有JVM的信息,Http请求的信息,Tomcat线程的信息等. 对于一些比较活跃的框 ...
- 实战交付一套dubbo微服务到k8s集群(1)之Zookeeper部署
基础架构 主机名 角色 IP地址 mfyxw10.mfyxw.com K8S代理节点1,zk1 192.168.80.10 mfyxw20.mfyxw.com K8S代理节点2,zk2 192.168 ...
- Python 是什么语言
Python 是 解释型语言,强类型定义语言,动态类型定义语言 编译型语言 & 解释型语言 编译型语言:代码在执行前,需要编译(成机器语言文件,如 .exe 文件):以后再运行时,直接使用编译 ...