Java01

Java安装
4号晚上在我学Java朋友的帮助下 还费了一晚上的时间没安好 气到胸闷
感谢:https://www.runoob.com/w3cnote/windows10-java-setup.html 和https://blog.csdn.net/weixin_40575457/article/details/81625169
我顺着默认路径安装的 之后剪切到了D盘 之后在环境配置里将Java的路径往上移了
Java -version javac -version
过去学习编程语言的方法经验和教训:要多敲 不要害怕
对Java平台还没有多少了解 因为安装实在是废了好久 还有eclipse和idea 我找了好久没找到注册码
加油

 

1.何谓对象?

  在Java中有一句比较流行的话,叫做“万物皆对象”,这是Java语言设计之初的理念之一。要理解什么是对象,需要跟类一起结合起来理解。下面这段话引自《Java编程思想》中的一段原话:

  “按照通俗的说法,每个对象都是某个类(class)的一个实例(instance),这里,‘类’就是‘类型’的同义词。”

 

Java 变量类型
类变量(static):类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。静态变量在第一次被访问时创建,无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。静态变量储存在静态存储区。具有默认值
实例变量:声明在一个类中,但在方法、构造方法和语句块之外,不过没有 static 修饰。实例变量具有默认值
局部变量:声明在类的方法、构造方法或者语句块中;当它们执行完成后,变量将会被销毁;
                 访问修饰符不能用于局部变量;局部变量是在栈上分配的。
                 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用

public class Variable{
    static int allClicks=0;    // 类变量
    String str="hello world";  // 实例变量
    public void method(){
 
        int i =0;  // 局部变量
 
    }
}

类变量和实例变量的区别是什么
    类变量是所有对象共有,其中一个对象将它值改变,其他对象得到的就是改变后的结果;而实例变量则各归各的;
    静态变量属于类,该类不生产对象,通过类名就可以调用静态变量。实例变量属于该类的对象,必须产生该类对象,才能调用实例变量。
    只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间/实例变量必须创建实例对象之后才会申请空间

Java类中 初始化成员变量(类中声明 方法外)不用赋值,而初始化局部变量(方法内)就要赋值  https://blog.csdn.net/x541211190/article/details/75287711

Java变量作用域
   根据作用域的不同,一般将变量分为不同的类型:类变量、局部变量、方法参数变量及异常处理参数变量
   异常处理参数变量的作用域是在异常处理块中,该变量是将异常处理参数传递给异常处理块,与方法参数变量类似。

Java01_第1张图片

 

 

float double浮点数 如果后面没有跟任何修饰,它的类型为双精度

Java有浮点型有两个,float和double,Java默认浮点类型是double。浮点类型的字段长度和表数范围是固定的,与其它因素无关。
double类型:double类型数值为双精度浮点数,占8个字节,64位。这是Java浮点型的默认类型,如3.14,后面不写D。
float类型:float类型为单精度浮点数,占4个字节,32位。如果想表示float类型,需要在数字末尾加F或者f,例如3.14f,3.14F. (float f=1.2d错误)

public class test01 {
     public static void main(String[] args) {
        float f1= 1.11;
        
        System.out.println(f1);
     }
}
ERROR:
Type mismatch: cannot convert from double to float

在没有声明的情况下:float f=3.4; 为默认情况,也就是默认小数3.4此时为double类型,所以float f=3.4;这个写法是错误的,因为此时,

公式是:左边是 float类型=右边是double类型,公式不成立。

 

自动类型转换 

2. 两个整数相加,结果默认转化为int

short s = 5;
s = s + 10; // 这里会出现编译错误,因为s参与运算,这时会自动转换为int型,s + 10 的值为int型,int型不能直接赋值给short型,需要强制转化
s += 10; // 这里不会出现错误,因为扩展赋值运算符自带强转功能

byte b = 27;
byte c = 26;
byte d =(byte)( b + c);
 public static void main(String[] args) {
        byte x = 3;
        double y = 15.0;
        int z = (int)x/y*2;
        System.out.println(z);
     }
Type mismatch: cannot convert from double to int
  Type methodA(byte x, double y) {
     return (short)x / y * 2;       所以x在此被强制转成了short?最终结果因为y还是double
  }
  Type的类型将为double。

 

 单:

  整数和浮点数都能进行取余运算。

 int i = 0xFFFFFFF1;  
 int j = ~i;
 System.out.println(i);
 System.out.println(j);
 * 0xFFFFFFF1的二进制表示为:
   1111 1111 1111 1111 1111 1111 1111 0001
       符号位不变,其余各位按位取反,然后加1
   1000 0000 0000 0000 0000 0000 0000 1111
        就是-15.

 采用“&&”和“||”的目的是为了加快运算速度

 

简单数据类型及其对应包装类

自学System,Integer,Math类,总结学习心得
描述一下这些类的用途,特点,基本字段(field),常用方法(method)

 Integer类: 

  • 包装一个对象中的原始类型 int的值。 类型为 Integer的对象包含一个单一字段,其类型为 int
  • 基本字段field:BYTES/MAX_VALUE/MIN_VALUE/TYPE

  java int与integer的区别

int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象
1.Java 中的数据类型分为基本数据类型和复杂数据类型
int 是前者而integer 是后者(也就是一个类);因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为null.

Java01_第2张图片

Java中每种内建类型都有相应的外覆类。float Float;double Double;string String等
当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装 object的,这是就需要这些内建类型的外覆类了
int和Integer不能够互用,因为他们两种不同的数据类型;

MATH: 

  • 基本字段field:E/PI

SYSTEM:

  • System类提供的System包括标准输入
  • field:err /in /out

 

 

 

Java对象与Java对象引用

mark:https://blog.csdn.net/qq_26805137/article/details/52945688 

美图秀秀你连拼图都不行吗???????????????啊。。

 

C++与JAVA的创建对象

先mark https://blog.csdn.net/u014453898/article/details/67134952    脚本之家 https://www.jb51.net/article/128419.htm

两种语言里都含有 new 操作符,但它们的含义大不相同,这与它俩的变量管理方式有关。

在 Java 中,只有当你使用 new 操作符时,才会真正在内存中申请一块空间,创建一个新对象,并将该对象绑定到你所定义的变量名上。其它情况下,要么是将已有对象绑定到某个变量名上,要么就是定义的变量名是个空引用,没有绑定任何对象。

也就是说,定义变量名只是创建了一个新的标识符,跟创建对象没有关系,创建对象必须通过 new 来完成,只有创建对象时才会申请内存空间。

但在 C++ 中,当你定义了一个变量 s 时,即使你没有给它赋值,也意味着你不但创建了一个新的标识符,同时还在栈中申请了对应的内存空间。

因此,C++ 中定义的变量名不仅仅是个标识符,还自动关联着栈中的一块内存空间。

而 C++ 中的 new 操作符表示的是在堆中申请内存,因为栈中的内存在运行时期大小是固定且有限的,因此需要动态内存分配的时候就需要用 new 来实现。这类似于 C 里面的 malloc 函数,只不过 new 操作符还封装了其它的操作。

总结而言,Java 中的变量名仅仅是一个用于引用内存中实际对象的标识符,如果你没给它关联对象,它就为空引用。而 C++ 中的变量名(非指针类型),虽然也是标识符,但却始终关联着实际的内存空间,当我们看到一个变量(非指针类型)时,就知道它代表着一块实际的内存空间。

https://blog.csdn.net/new_abc/article/details/37928275 https://blog.csdn.net/bsbhenry/article/details/84842861

 

 

咋回事。。每次进来都得重新刷新一次

 

c++ 虚函数 纯虚函数

虚函数:

在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。

纯虚函数 :

纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”  virtual void funtion1()=0

虚函数和普通的函数实际上是存储在不同的区域的,虚函数所在的区域是可被覆盖(也称复写override)的,每当子类定义相同名称的虚函数时就将原来基类的版本给覆盖了,另一侧面也说明了为什么基类中声明的虚函数在后代类中不需要另加声明一律自动为虚函数,因为它所存储的位置不会发生改变。而普通函数的存储区域不会覆盖,每个类都有自己独立的区域互不相干。

 

转载于:https://www.cnblogs.com/yundong333/p/11467084.html

你可能感兴趣的:(Java01)