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 ){}
}

}
相关文章
|
2月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
86 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
6月前
|
Java
【Java基础】输入输出流(IO流)
Java基础、输入输出流、IO流、流的概念、输入输出流的类层次结构图、使用 InputStream 和 OutputStream流类、使用 Reader 和 Writer 流类
184 2
|
3月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
6月前
|
安全 Java
|
6月前
|
安全 Java 编译器
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
43 1
|
6月前
|
搜索推荐 算法 Java
【Java基础】 几种简单的算法排序
几种简单的JAVA算法排序
54 4
|
7月前
|
Java 调度 开发者
Java中的多线程编程:基础知识与实践
【5月更文挑战第29天】 在现代软件开发中,多线程编程是一个不可忽视的领域。特别是在Java这种广泛使用的编程语言中,掌握多线程的概念和技术对于开发高效、响应迅速的应用程序至关重要。本文将深入探讨Java多线程的核心概念、实现机制以及常见问题的解决方案。我们将从基础出发,逐步揭示如何通过多线程提升程序性能,并且讨论并发编程中的挑战和解决策略。文章的目的是为开发者提供一个清晰的多线程编程指南,帮助他们在实际项目中有效地应用这些知识。
40 3
|
7月前
|
Java 开发者
Java中的多线程编程:基础知识与实践
【5月更文挑战第26天】 在现代计算机科学中,多线程编程是一个复杂且强大的概念。Java作为一种广泛使用的编程语言,其对多线程的支持使得开发者能够创建出更为复杂、高效和响应迅速的应用程序。本文将深入探讨Java中的多线程编程,从基础概念到实际编程技巧,为读者提供全面的理解和实践指导。
|
7月前
|
监控 IDE Java
Java中的多线程编程:基础知识与实践
【5月更文挑战第30天】 在现代软件开发中,多线程编程是提高应用程序性能和响应能力的关键。特别是在Java这样的多平台、多用途的编程语言中,掌握多线程技术至关重要。本文旨在为读者提供有关Java多线程编程的全面介绍,从基本概念到高级应用技巧,帮助初学者和有经验的开发者理解并有效使用多线程。文章不仅涉及基础理论,还包括代码示例和最佳实践,确保读者能够将知识应用于实际项目中。
|
7月前
|
Java 程序员 调度
Java中的多线程编程:基础知识与实践
【5月更文挑战第28天】 在现代计算机科学中,多线程编程是一个重要的概念,它允许程序同时执行多个任务。在Java中,多线程编程是通过创建并管理线程来实现的。本文将介绍Java中多线程编程的基础知识,包括线程的概念、创建和控制线程的方法,以及线程同步和通信的相关技术。通过阅读本文,读者将对Java中的多线程编程有一个全面的了解,并能在实际编程中应用这些知识。