java之路,基础知识3

简介: 反码:正数的反码和原码相同,负数的反码是原码取反,但符号位不变。 补码:整数的补码和原码一样,负数的补码是反码加1 移位运算: 数            x          x>2              x>>>2 17      00010001    00 0100...
反码:正数的反码和原码相同,负数的反码是原码取反,但符号位不变。
补码:整数的补码和原码一样,负数的补码是反码加1

移位运算:
数            x          x>2              x>>>2
17      00010001    00 01000100      00000100 01     00000100 01
-17     11101111    11 10111100      11111011 11     00111011 11

面向过程和面向对象的区别:
    过程化程序设计先确定算法,再确定数据结构
    面向过程设计先建立数据结构,再确定算法

类:把相似的对象归成一类,类就是一个模板,它定义了一个通用于特定种类的所有对象的状态和方法
      类是创建对象的模板,对象是类的实例
class Point
{
 int x,y;
 void output()
 {
  System.out.println(x);
  System.out.println(y);  
 }
 
 public static void main(String[] args)
 {
  Point pt = new Point();
  pt.x = 10;
  pt.y = 20;
  pt.output(); 
 }
}
对象的初始化需要new关键字

构造函数:为类的对象定义初始化状态,不能直接调用构造方法,必须通过new关键字来调用。java的类都有构造方法,没有写的,编译器会提供一个默认的缺省构造方法。
缺省构造方法中各种数据的默认值:数值型 0, boolean  false,  char  '\0',   对象   null
当类中定义了一个构造函数,无论是有参数的还是无参数的,系统都不提供构造函数。
class Point
{
 int x,y;
 Point()
{
 x=5;
 y=5;
}
 Point(int a, int b)
{
 x=a;
 y=b;
}

 void output()
 {
  System.out.println(x);
  System.out.println(y);  
 }
 
 public static void main(String[] args)
 {
  Point pt = new Point();
  pt.output(); 
 }
}
函数重载:名称相同,但是参数的个数,或者参数的形式不同,这样就构成了函数的重载。系统会根据调用时传递的参数类型来确定调用哪个函数。

class Point
{
 int x,y;
 Point(int a, int b)
{
 x=a;
 y=b;
}
Point()
{
this(1,1);   //this 前面不能有东西,必须是第一句话
}
 void output(int x, int y)                //参数x与成员变量同名冲突 ,导致没有赋值成功
 {
    x = x;          //应该使用this.x = x;
   y = y;           //应该使用this.y = y;
  System.out.println(x);
  System.out.println(y);  
 }
 
 public static void main(String[] args)
 {
  Point pt = new Point();
  pt.output(3,3); 
  Point pt1 = new Point();
  pt.x = 6;
  pt1.x = 7;
  System.out.println(pt.x);             //        6
  System.out.println(pt1.x);           //        7
 }
}

this变量代表对象本身,当类中有两个同名变量,一个属于类(全局变量),一个属于方法(局部变量),使用this变量来区分。
this变量可以简化构造函数的调用,无参构造函数调用有参构造函数
类的方法在内存中只有一份拷贝,但是类的变量在每个对象中都有一份拷贝
 
static 方法,类的方法,属于类,而不是属于某一个对象。 调用的时候直接用类名调用,在类加载时就分配了空间。
static 变量,类的变量,属于类。static方法只能访问static变量,而非静态的方法既可以调用静态变量,又可以调用非静态变量

常量定义 fianl  double  PI =  3.1415926;  常量在定义时必须初始化,或者在构造函数中初始化。

类的继承: extends 关键字,被继承的叫做基类或者父类, 继承的叫做子类。java不允许多继承
class Animal
{
int height;
void eat();{}
void breath(){System.out.println("animal');}
}
class Fish extends Animal
{
  super.breath();
  void breath(){System.out.println("fish);}
}
子类的方法覆盖了父类的方法,如果要访问父类的方法,那么就调用super方法访问父类中被隐藏的方法。每一个子类在初始化的时候都隐含的调用super(),这就是调用了父类中一个不带参数的构造方法,如果父类中没有相应的方法,那么就会出错。构造方法不可以重载

instanceof  判断一个对象是否是类的实例 
class Animal
{
int height;
void eat();{}
void breath(){System.out.println("animal');}
}
class Fish extends Animal
{
  super.breath();
  void breath(){System.out.println("fish);}
}
class Inter
{
  public static void main(String[]  args)
 {
Animal  an = new Animal();
  if(an  instanceof  Animal ){}
}

}
相关文章
|
3月前
|
存储 Java
最新Java基础系列课程--Day10-IO流文件处理(一)
最新Java基础系列课程--Day10-IO流文件处理
|
14天前
|
Java 程序员 调度
Java中的多线程编程:基础知识与实践
【4月更文挑战第5天】 在现代软件开发中,多线程编程是一个不可或缺的技术要素。它允许程序员编写能够并行处理多个任务的程序,从而充分利用多核处理器的计算能力,提高应用程序的性能。Java作为一种广泛使用的编程语言,提供了丰富的多线程编程支持。本文将介绍Java多线程编程的基础知识,并通过实例演示如何创建和管理线程,以及如何解决多线程环境中的常见问题。
|
17天前
|
搜索推荐 Java
Java基础(快速排序算法)
Java基础(快速排序算法)
23 4
|
20天前
|
关系型数据库 Java 开发工具
Java入门高频考查基础知识9(15问万字参考答案)
本文探讨了Spring Cloud的工作原理,包括注册中心的心跳机制、服务发现机制,以及Eureka默认的负载均衡策略。同时,概述了Spring Boot中常用的注解及其实现方式,并深入讨论了Spring事务的注解、回滚条件、传播性和隔离级别。文章还介绍了MySQL的存储引擎及其区别,特别关注了InnoDB如何实现MySQL的事务处理。此外,本文还详细探讨了MySQL索引,包括B+树的原理和设计索引的方法。最后,比较了Git和SVN的区别,并介绍了Git命令的底层原理及流程。
29 0
Java入门高频考查基础知识9(15问万字参考答案)
|
20天前
|
存储 缓存 算法
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
最重要的是保持自信和冷静。提前准备,并对自己的知识和经验有自信,这样您就能在面试中展现出最佳的表现。祝您面试顺利!Java 是一种广泛使用的面向对象编程语言,在软件开发领域有着重要的地位。Java 提供了丰富的库和强大的特性,适用于多种应用场景,包括企业应用、移动应用、嵌入式系统等。下是几个面试技巧:复习核心概念、熟悉常见问题、编码实践、项目经验准备、注意优缺点、积极参与互动、准备好问题问对方和知其所以然等,多准备最好轻松能举一反三。
46 0
Java入门高频考查基础知识4(字节跳动面试题18题2.5万字参考答案)
|
20天前
|
存储 算法 JavaScript
Java入门高频考查算法逻辑基础知识3-编程篇(超详细18题1.8万字参考编程实现)
解决这类问题时,建议采取下面的步骤: 理解数学原理:确保你懂得基本的数学公式和法则,这对于制定解决方案至关重要。 优化算法:了解时间复杂度和空间复杂度,并寻找优化的机会。特别注意避免不必要的重复计算。 代码实践:多编写实践代码,并确保你的代码是高效、清晰且稳健的。 错误检查和测试:要为你的代码编写测试案例,测试标准的、边缘情况以及异常输入。 进行复杂问题简化:面对复杂的问题时,先尝试简化问题,然后逐步分析和解决。 沟通和解释:在编写代码的时候清晰地沟通你的思路,不仅要写出正确的代码,还要能向面试官解释你的
32 0
|
20天前
|
存储 Java 编译器
Java入门高频考查基础知识2(超详细28题2.5万字答案)
多态是面向对象编程中的一个重要概念,它允许不同类的对象对同一消息作出不同的响应。在具体实现上,多态允许一个父类的引用指向其子类的对象,并根据实际指向的对象的类型来调用相应的方法。在 Java 中,多态可以通过以下几种方式实现:在同一个类中,方法名相同,但形参列表不同,实现了多态。子类可以重写(覆盖)其父类的方法,实现多态。在父类引用中调用该方法时,根据实际指向的子类对象的类型来调用相应的方法实现。
38 0
|
26天前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
90 3
|
1月前
|
SQL Java 数据库连接
JAVA数据库的基础知识
JAVA数据库的基础知识
15 1
|
1月前
|
Java 调度
Java中的多线程编程:基础知识与实践
【2月更文挑战第26天】在现代软件开发中,多线程编程是一个重要的概念。Java作为一种广泛使用的编程语言,提供了丰富的多线程编程支持。本文将介绍Java中多线程编程的基础知识,包括线程的概念、创建和控制,以及线程同步和通信的方法。同时,通过实例分析,帮助读者更好地理解和掌握Java多线程编程的技巧。