java编程基础

(一)变量的数据类型

  • byte:8位
  • short:16位
  • int:32位
  • long:64位
  • float:32位
  • double:64位
  • char:两个字节

(二)类型转换

自动转换,两个条件

  • 两种数据类型彼此兼容
  • 目标类型的取值范围大于源类型的取值范围
byte
short
int
long
float
double
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

  1. 属于类,不属于对象
  2. 可以直接用类名来调用
  3. 静态不能直接调用非静态

(七)final

  1. final修饰基本类型变量,变量值不能更改
  2. final修饰引用类型,引用不能更改,但是指向的值可以改变
  3. final修饰类,类不能被继承
public final class Father{
}
  1. final修饰方法,该方法不能被子类覆盖
public final void test(){
}

(八)继承1

  • 关键字:extends

  • 父类中的private在子类中直接使用

  • 不能有多个父类

  • 所有类的父类-object

    1. String toString()返回对象的字符串描述
    2. boolean equals()比较两个对象是否相等(比较引用)
    3. int hasCode()
    4. Object clone() 克隆一个对象
    5. Class getClass() 返回当前类的Class对象

(九)覆盖(override)

  1. 父类的某个方法在子类中重新定义,以体现子类的特有行为

  2. 子类的方法签名(方法名+参数数量和类型)和返回类型都与父类对象中的对应方法相同

  3. 子类覆盖的时候不要降低父类方法的可见性

  4. 子类覆盖的方法可以返回被覆盖方法所返回类型的子类型
    父类:public Object test();
    子类:public String test();

  5. 子类覆盖的方法签名要与父类相同

  6. 加上@Override可以防止错误

(十)super

屏蔽属性:子类的属性名和父类属性名相同,则会屏蔽父类
通过super可以调用父类方法与属性
super.父类属性
super.子类属性

super(x,y,z):
调用父类构造器,必须放在第一行
如果没有显示的调用父类构造器,将调用默认构造器
如果父类有有参构造幻术,但没有无参构造函数,且没有显示的调用父类构造器,将会报错

(十一)多态

  1. 可以使用父类类型变量指向子类类型对象
    Shape cir=new Circle();
    但是父类类型不能操作子类特有方法
  2. 根据其所引用的类型来调用方法
  3. 不能将父类类型变量赋给子类
  4. 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

  1. 修饰类
public abstract class Shape{
}

抽象类不能实例化,只能作为其他类的父类
生来就应该被继承
2. 修饰方法

public abstract double getArea(){
}

只有声明没有实现
3. 抽象类中可以有非抽象方法

(十三)接口

  1. 接口与类相似,是一个引用类型
  2. 使用interface关键字进行声明
  3. 非默认方法、非静态方法声明为abstract
  4. 接口不能实例化
  5. 由其它类实现(implements)
  6. 接口数组可以实例化
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();
}
}
}
  1. 一个类可以实现多个接口
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对象
  1. 以下不是克隆,仅仅是拷贝引用指针
    克隆是在堆内存中重新生成一个对象
Emp a=new Emp();
Emp b=a;//拷贝指针
  1. 如果要调用Object的clone方法

    • 必须实现Cloneable这个标识接口
    • 在子类中覆盖clone方法,调用super.clone
  2. 一般不需要在自定义的类中实现clone
  3. 所有的数组类型均包含一个clone方法

(十四)嵌套类

  1. 内部类可以访问外部类的所有属性和方法,包括private属性
  2. 创建内部类对象,必须先有外部类,然后才能创造其内部类
 OutClass outerObject=new OutClass();
OutClass.InClass inerObject=outObject.new InClass();
  1. 覆盖(使用外部类需要加上类名)

(十五)匿名类

方法体内声明,但不对类进行命名

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的更多相关文章

  1. Java 学习内容总结

    最近对Core Java基础做了一些学习.有自己的见解,也有别人的总结,供大家参考. 1 实现多线程的方式有几种? 其实这个问题并不难,只是在这里做一个总结.一共有三种. 实现Runnable接口,并 ...

  2. java学习内容整理

    转自:http://www.cnblogs.com/caoleiCoding/p/6170555.html 首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习j ...

  3. 第五周Java学习总结(补)

    第五周java学习内容(补) 学习内容: File类方法的操作 public String getName() public boolean canRead() public boolean canW ...

  4. 20155209 2016-2017-2 《Java程序设计》第九周学习总结 ## 教材学习内容总结

    教材学习内容总结 JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据. 执行流程: •连接数据源,如:数据库. •为数据库传递查询和更新指令. •处理数据库响应并返回的结 ...

  5. JAVA第十周《网络编程》学习内容总结

    JAVA第十周<网络编程>学习内容总结 学习内容总结 1.初听到网络编程四个字可能会觉得很困难,实际上网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据,把数据发送到指定的位置, ...

  6. # 20145118 《Java程序设计》第4周学习总结 ## 教材学习内容总结

    20145118 <Java程序设计>第4周学习总结 教材学习内容总结 本周内容为教材第六.七两张内容. 重点概念: 1.面向对象中,子类继承父类,避免重复的行为定义,是一种简化操作. 2 ...

  7. 20145118 《Java程序设计》第5周学习总结 教材学习内容总结

    20145118 <Java程序设计>第5周学习总结 教材学习内容总结 1.Java中所有错误都会被打包成对象,可以通过try.catch语法对错误对象作处理,先执行try,如果出错则跳出 ...

  8. 20155328 2016-2017-2 《Java程序设计》 第十周学习内容总结

    20155328 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 JAVA和ANDROID开发学习指南 第22章 网络概览 两台计算机用于通信的语言叫做&qu ...

  9. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  10. 分享篇——我的Java学习路线

    虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...

随机推荐

  1. golang技术降本增效的手段

    最近一年各大中小厂都在搞"优化",说到优化,目的还是"降本增效",降低成本,增加效益(效率). 技术层面,也有一些降本增效的常规操作. 比如池化.io缓冲区技术 ...

  2. 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 ...

  3. manacher(马拉车)算法C++详解

    马拉车的定义 马拉车本质是对中心扩展法(暴力算法)的优化. 马拉车是干什么的 Manacher算法帮助我们在给定的字符串中找到最长的回文子串. 为了简单起见,我们先只处理有奇数个字符的字符串,关于偶数 ...

  4. 【路由器】OpenWrt 手动编译 ipk

    目录 .ipk 文件 编译准备 编译 .ipk 文件 更新 feeds 配置平台 获取交叉编译链 添加需要编译的第三方软件包 参考资料 .ipk 文件 .ipk 文件是可以通过 OpenWrt 的包管 ...

  5. 三维模型OSGB格式轻量化顶点压缩主要技术方法分析

    三维模型OSGB格式轻量化顶点压缩主要技术方法分析 在三维模型应用中,轻量化处理是提高数据传输效率.减少渲染时间和优化用户体验的重要手段.而OSGB格式是一种常见的三维模型格式,在进行轻量化处理时,顶 ...

  6. 《SQL与数据库基础》20. 主从复制

    目录 主从复制 原理 搭建 主库配置 从库配置 测试 本文以 MySQL 为例 主从复制 主从复制是指将主数据库的 DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执 ...

  7. Verilog实现定点乘法器

    实验目的 理解定点乘法的不同实现算法的原理,掌握基本实现算法. 熟悉并运用 Verilog 语言进行电路设计. 为后续设计 CPU 的实验打下基础. 实验内容 定点乘法器有多种实现,实验要求实现迭代乘 ...

  8. WorkPress使用BackWPup插件备份后手动还原方法记录

    前提 拿到BackWPup插件备份的zip包(下文均以backup.zip来指代).这个是备份包是事先从源WorkPress上备份好的. 环境 OS:Centos7.9 Apache:2.4.6 PH ...

  9. 使用Springboot+SpringCloud+Seata1.3.0+Nacos1.2.1进行全局事务管理

    一.官方文档网址 http://seata.io/zh-cn/docs/overview/what-is-seata.html Seata1.3.0开发组提供的开发文档 二.常见问题 2.1:网址: ...

  10. Dubbo3应用开发—XML形式的Dubbo应用开发和SpringBoot整合Dubbo开发

    Dubbo3程序的初步开发 Dubbo3升级的核心内容 易⽤性 开箱即⽤,易⽤性⾼,如 Java 版本的⾯向接⼝代理特性能实现本地透明调⽤功能丰富,基于原⽣库或轻量扩展即可实现绝⼤多数的 微服务治理能 ...