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变量作用域
根据作用域的不同,一般将变量分为不同的类型:类变量、局部变量、方法参数变量及异常处理参数变量
异常处理参数变量的作用域是在异常处理块中,该变量是将异常处理参数传递给异常处理块,与方法参数变量类似。
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.
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
咋回事。。每次进来都得重新刷新一次
虚函数:
在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回类型 函数名(参数表) {函数体};实现多态性,通过指向派生类的基类指针
纯虚函数 :
纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0” virtual void funtion1()=0
虚函数和普通的函数实际上是存储在不同的区域的