java学习内容-2
目录
java编程基础
(一)变量的数据类型
- byte:8位
- short:16位
- int:32位
- long:64位
- float:32位
- double:64位
- char:两个字节
(二)类型转换
自动转换,两个条件
- 两种数据类型彼此兼容
- 目标类型的取值范围大于源类型的取值范围
(三)运算符
1.除法:如果都是整数,最后结果也是整数,如果有小数,最后结果位小数
2.异或(^):符号两边不相同时为真,相同为假
4.&和&&(短路与):&两边都会运算,然后按照规则比较;&&如果左边为假,右边不会运算
(四)数组
定义:int[] x=new int[3];
初始化:
int[] x=new int[]{1,2,3};
int[] x={1,2,3};
常见操作(Arrays对象):
1.打印数组:Arrays.toString(x);
2.拷贝数组:Arrays.copyOf(x,x.length);
3.数组排序:Arrays.sort(x);
package Test;
import java.util.Arrays;
public class Test {
public static void main(String[] args){
int[] x={2,1,4,5,3,5,9,7};
int[] x2=Arrays.copyOf(x, x.length);
Arrays.sort(x);
System.out.println(Arrays.toString(x));
System.out.println(Arrays.toString(x2));
}
}
多维数组:
int[][] x=new int[3][]
第二个空可以不写。3行n列
int[][] x={{1,2},{3,4,5,6},{7,8,9}};
package Test;
import java.util.Arrays;
public class Test {
public static void main(String[] args){
int[][] x={{1,2},{3,4,5},{6,7,8,9}};
System.out.println(x.length);
System.out.println(x[2].length);
System.out.println(Arrays.deepToString(x));
}
}
数组列表-ArrayList
不能添加基本类型,如int、double等
ArrayList<String> strList=new ArrayList<String>();
ArrayList<String> strList=new ArrayList<>();
List<String> strList=new ArrayList<>();
StringBuilder类,对字符串的频繁修改时使用
StringBuilder stringbuilder=new StringBuilder();
stringbuilder.append();
capacity(容量),length实际长度
(五)构造函数
package Person;
public class Person {
private String name;
private int age;
public Person(){
this("NULL",0);
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
public static void main(String[] args) {
Person per=new Person("孟祥威",100);
Person per1=new Person();
System.out.println(per.name+", "+per.age);
System.out.println(per1.name+", "+per1.age);
}
}
(六)static
- 属于类,不属于对象
- 可以直接用类名来调用
- 静态不能直接调用非静态
(七)final
- final修饰基本类型变量,变量值不能更改
- final修饰引用类型,引用不能更改,但是指向的值可以改变
- final修饰类,类不能被继承
public final class Father{
}
- final修饰方法,该方法不能被子类覆盖
public final void test(){
}
(八)继承1
关键字:extends
父类中的private在子类中直接使用
不能有多个父类
所有类的父类-object
- String toString()返回对象的字符串描述
- boolean equals()比较两个对象是否相等(比较引用)
- int hasCode()
- Object clone() 克隆一个对象
- Class getClass() 返回当前类的Class对象
(九)覆盖(override)
父类的某个方法在子类中重新定义,以体现子类的特有行为
子类的方法签名(方法名+参数数量和类型)和返回类型都与父类对象中的对应方法相同
子类覆盖的时候不要降低父类方法的可见性
子类覆盖的方法可以返回被覆盖方法所返回类型的子类型
父类:public Object test();
子类:public String test();子类覆盖的方法签名要与父类相同
加上@Override可以防止错误
(十)super
屏蔽属性:子类的属性名和父类属性名相同,则会屏蔽父类
通过super可以调用父类方法与属性
super.父类属性
super.子类属性
super(x,y,z):
调用父类构造器,必须放在第一行
如果没有显示的调用父类构造器,将调用默认构造器
如果父类有有参构造幻术,但没有无参构造函数,且没有显示的调用父类构造器,将会报错
(十一)多态
- 可以使用父类类型变量指向子类类型对象
Shape cir=new Circle();
但是父类类型不能操作子类特有方法 - 根据其所引用的类型来调用方法
- 不能将父类类型变量赋给子类
- instanceof关键字
测试对象实际类型,结果为true or false
实现安全的类型转换
Shape[] shapes=new Shapes[3];
Shape[0]=new Circle();
Shape[1]=new Rect();
Shape[2]=new Circle();
for(Shape e:shapes){
if(e instanceof Circle){
Circle x=(Circle)e;
System.out.println(x.getRadius());
}
}
(十二)抽象类–abstract
- 修饰类
public abstract class Shape{
}
抽象类不能实例化,只能作为其他类的父类
生来就应该被继承
2. 修饰方法
public abstract double getArea(){
}
只有声明没有实现
3. 抽象类中可以有非抽象方法
(十三)接口
- 接口与类相似,是一个引用类型
- 使用interface关键字进行声明
- 非默认方法、非静态方法声明为abstract
- 接口不能实例化
- 由其它类实现(implements)
- 接口数组可以实例化
interface Fly {
public abstract void fly();//没有方法体
}
class Plane imlements Fly{
@Override
public void fly(){
System.out.println("sss");
}
}
public class Bird implements Fly {
@Override
public void fly(){
System.out.println("Bird can fly");
}
}
public class Mian {
public static void main(String[] args) {
Fly a=new Plane();
Fly b=new Bird();
Fly[] e=new Fly[2];
e[0]=a;
e[1]=b;
for(Fly c:e){
c.fly();
}
}
}
- 一个类可以实现多个接口
class Plane implements Fly, Comparable{
}
Comparator例子
package comparable;
public class Emp {
private int age;
private String name;
private int money;
public Emp(){
this(0,"NULL",0);
}
public Emp(int age,String name,int money){
this.age=age;
this.name=name;
this.money=money;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
@Override
public String toString(){
return "姓名:"+name+", "+"年龄:"+age+", "+"薪水:"+money;
}
}
package comparable;
import java.util.Comparator;
public class Comp implements Comparator<Emp> {
@Override
public int compare(Emp arg0, Emp arg1) {
if(arg0==arg1)
return 0;
int cn=arg0.getName().compareTo(arg1.getName());
if(arg0.getName()!=arg1.getName())
return cn;
else if(arg0.getMoney()!=arg1.getMoney())
return arg0.getMoney()-arg1.getMoney();
else if(arg0.getAge()!=arg1.getAge())
return arg0.getAge()-arg1.getAge();
else
return 0;
}
}
package comparable;
import java.util.Arrays;
public class Min{
public static void main(String[] args){
Emp x1=new Emp(10,"meng",100);
Emp x2=new Emp(12,"xiang",50);
Emp x3=new Emp(14,"wei",120);
Emp x4=new Emp(20,"dada",113);
Emp[] x={x1,x2,x3,x4};
Arrays.sort(x,new Comp());
for(Emp e:x)
System.out.println(e);
}
}
Cloneable对象
- 以下不是克隆,仅仅是拷贝引用指针
克隆是在堆内存中重新生成一个对象
Emp a=new Emp();
Emp b=a;//拷贝指针
- 如果要调用Object的clone方法
- 必须实现Cloneable这个标识接口
- 在子类中覆盖clone方法,调用super.clone
- 一般不需要在自定义的类中实现clone
- 所有的数组类型均包含一个clone方法
(十四)嵌套类
- 内部类可以访问外部类的所有属性和方法,包括private属性
- 创建内部类对象,必须先有外部类,然后才能创造其内部类
OutClass outerObject=new OutClass();
OutClass.InClass inerObject=outObject.new InClass();
- 覆盖(使用外部类需要加上类名)
(十五)匿名类
方法体内声明,但不对类进行命名
public class OIN {
public int x=1;
@Override
public String toString(){
return "外部";
}
public static void main(String[] args) {
OIN tt=new OIN();
OIN t=new OIN(){
@Override
public String toString(){
return "内部";
}
};
System.out.println(t);
System.out.println(tt);
}
}
java学习内容-2的更多相关文章
- Java 学习内容总结
最近对Core Java基础做了一些学习.有自己的见解,也有别人的总结,供大家参考. 1 实现多线程的方式有几种? 其实这个问题并不难,只是在这里做一个总结.一共有三种. 实现Runnable接口,并 ...
- java学习内容整理
转自:http://www.cnblogs.com/caoleiCoding/p/6170555.html 首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习j ...
- 第五周Java学习总结(补)
第五周java学习内容(补) 学习内容: File类方法的操作 public String getName() public boolean canRead() public boolean canW ...
- 20155209 2016-2017-2 《Java程序设计》第九周学习总结 ## 教材学习内容总结
教材学习内容总结 JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据. 执行流程: •连接数据源,如:数据库. •为数据库传递查询和更新指令. •处理数据库响应并返回的结 ...
- JAVA第十周《网络编程》学习内容总结
JAVA第十周<网络编程>学习内容总结 学习内容总结 1.初听到网络编程四个字可能会觉得很困难,实际上网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据,把数据发送到指定的位置, ...
- # 20145118 《Java程序设计》第4周学习总结 ## 教材学习内容总结
20145118 <Java程序设计>第4周学习总结 教材学习内容总结 本周内容为教材第六.七两张内容. 重点概念: 1.面向对象中,子类继承父类,避免重复的行为定义,是一种简化操作. 2 ...
- 20145118 《Java程序设计》第5周学习总结 教材学习内容总结
20145118 <Java程序设计>第5周学习总结 教材学习内容总结 1.Java中所有错误都会被打包成对象,可以通过try.catch语法对错误对象作处理,先执行try,如果出错则跳出 ...
- 20155328 2016-2017-2 《Java程序设计》 第十周学习内容总结
20155328 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 JAVA和ANDROID开发学习指南 第22章 网络概览 两台计算机用于通信的语言叫做&qu ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
- 分享篇——我的Java学习路线
虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...
随机推荐
- golang技术降本增效的手段
最近一年各大中小厂都在搞"优化",说到优化,目的还是"降本增效",降低成本,增加效益(效率). 技术层面,也有一些降本增效的常规操作. 比如池化.io缓冲区技术 ...
- Uncaught TypeError: Failed to set the 'currentTime' property on 'HTMLMediaElement': The provided double value is non-finite.
musicSeekTo: function(value){this.audio.currentTime = this.audio.duration*value; }, musicVoiceSeekTo ...
- manacher(马拉车)算法C++详解
马拉车的定义 马拉车本质是对中心扩展法(暴力算法)的优化. 马拉车是干什么的 Manacher算法帮助我们在给定的字符串中找到最长的回文子串. 为了简单起见,我们先只处理有奇数个字符的字符串,关于偶数 ...
- 【路由器】OpenWrt 手动编译 ipk
目录 .ipk 文件 编译准备 编译 .ipk 文件 更新 feeds 配置平台 获取交叉编译链 添加需要编译的第三方软件包 参考资料 .ipk 文件 .ipk 文件是可以通过 OpenWrt 的包管 ...
- 三维模型OSGB格式轻量化顶点压缩主要技术方法分析
三维模型OSGB格式轻量化顶点压缩主要技术方法分析 在三维模型应用中,轻量化处理是提高数据传输效率.减少渲染时间和优化用户体验的重要手段.而OSGB格式是一种常见的三维模型格式,在进行轻量化处理时,顶 ...
- 《SQL与数据库基础》20. 主从复制
目录 主从复制 原理 搭建 主库配置 从库配置 测试 本文以 MySQL 为例 主从复制 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执 ...
- Verilog实现定点乘法器
实验目的 理解定点乘法的不同实现算法的原理,掌握基本实现算法. 熟悉并运用 Verilog 语言进行电路设计. 为后续设计 CPU 的实验打下基础. 实验内容 定点乘法器有多种实现,实验要求实现迭代乘 ...
- WorkPress使用BackWPup插件备份后手动还原方法记录
前提 拿到BackWPup插件备份的zip包(下文均以backup.zip来指代).这个是备份包是事先从源WorkPress上备份好的. 环境 OS:Centos7.9 Apache:2.4.6 PH ...
- 使用Springboot+SpringCloud+Seata1.3.0+Nacos1.2.1进行全局事务管理
一.官方文档网址 http://seata.io/zh-cn/docs/overview/what-is-seata.html Seata1.3.0开发组提供的开发文档 二.常见问题 2.1:网址: ...
- Dubbo3应用开发—XML形式的Dubbo应用开发和SpringBoot整合Dubbo开发
Dubbo3程序的初步开发 Dubbo3升级的核心内容 易⽤性 开箱即⽤,易⽤性⾼,如 Java 版本的⾯向接⼝代理特性能实现本地透明调⽤功能丰富,基于原⽣库或轻量扩展即可实现绝⼤多数的 微服务治理能 ...