java的一些散知识点
来源:互联网 发布:加强网络舆情管理 编辑:程序博客网 时间:2024/05/16 01:06
一.关于java中的++的问题,++x是先加再用,而x++是先用在加,以下的例子说明了这个问题
public class MyText { public static void main(String arg[]){int x=0,y=0,k=0;for(int z=0;z<5;z++){ /*1.因为是&&的逻辑运算符,所以从左至右的进行判断,如果一遇到不真的后面的逻辑语句就不执行所以第一次循环时,只计算了++x,因为++x的值为1,是假的,所以不算++y了,2.诱因k++是先用k再加,所以判断的时候,k不会自加3.综上所述,if语句里的代码一次也没有执行*/if((++x>2)&&(++y>2)&&(k++>2)){x++;++y;k++;}System.out.println("第"+(z+1)+"次");System.out.println("x="+x+" "+"y="+y+" "+"k="+k);}}}
输出的结果:
第1次
x=1 y=0 k=0
第2次
x=2 y=0 k=0
第3次
x=3 y=1 k=0
第4次
x=4 y=2 k=0
第5次
x=5 y=3 k=1
二.Java中静态变量是属于类的,当然也可以使用对象的方法对静态变量进行操作,但是操作后的值还是类的,不属于类的实例化的对象。
例:
public class MyText { //静态变量是可以操作的,而且操作后的值也属于类,任何这个类的实例化对象引用它,都会输出类的静态变量private static int i =1;public int getNext(){return ++i;//++i是先加(运算)在执行赋值(=、return等操作)}public static void main(String[] args) {MyText my =new MyText();MyText my1=new MyText();//my对象调用getNext()方法,静态变量i的值会变成2my.getNext();//my1再getNext()时,静态变量i会直接从2加1,而不是从1再加1;System.out.println(my1.getNext());//输出结果为3}}
三.Java的类成员变量定义之后,如果是非final修饰的成员,java系统会自动的给变量赋予初值。
string类型赋予null,整型赋予0,小数赋予0.0,char类型赋予\u0000,boolean类型会默认为false。
但是如果是java修饰的成员,则必须初始化,可以在定义时初始化,也可以在构造器和出事化块里初始化。
实例变量是在非静态初始化块和构造器里初始化,要可以在定义时初始化;静态变量则只能在静态初始化块里和定义时初始化。
对于局部变量,则一定要程序员显示声明,系统不会为之赋予默认值。
public class MyText { boolean a;//boolean值为属性时,系统一般默认为falseint b;//默认为0,整型的byte,int,short,long都为0float c;//默认为0.0f,要是是double就是0.0dchar d;//默认为\u0000final int e;//定义了final值之后,必须在定义时、初始化块或者构造器中进行初始化 final int f;//final类型是系统不会默认赋值。 String g;//对于参考型的,出事值都为null {//这里是在初始化块里把e初始化了 e=3;} MyText()//这是在构造器里把f初始化了 { f=2; }public static void main(String[] args){ MyText my=new MyText(); //下面输出a-g七个不同的变量 System.out.println(my.a);//输出false System.out.println(my.b);//输出0 System.out.println(my.c);//输出0.0 System.out.println(my.d);//输出一个空格,因为\u0000是Unicode中的空格 System.out.println(my.e);//输出3,初始化块里赋了值 System.out.println(my.f);//输出2,构造器里赋了值 System.out.println(my.g);//输出null}}
四.对于java中的==和equal()方法
在基本类型里,如果两个类型不同,但是都是数值类型,只要是值相等,那么返回的值就是true(注意:==是逻辑运算符,返回的是一个boolean类型的值)
equal()这个方法是String类中的方法。
public class MyText {public static void main(String[] args) { int i=65;char c='A';float f=65.0f; //因为A对应的ASC∏码相同,所以输出的是true System.out.println(i==c); //下面也是输出的是true System.out.println(i==f); //下面也是输出的是true System.out.println(c==f); //下面定义两个String的对象,但是它们都是引用常量池的hello常量,所以返回值为true String str1="hello"; String str2="hello"; System.out.println(str1==str2); //如果是这样定义,则str3和str1就不是同一个对象了,因为new String创建了两个对象 String str3=new String("hello"); //下面将输出false System.out.println(str1==str3); //但是如果调用的是String的equal的对象,那么就能返回true System.out.println(str1.equals(str3)); }}
五.在继承的时候,子类是不能继承父类的构造器的,但是要是子类在实例化的时候和父类实例化的时侯做得事都一样,则在子类构造器里,可以用super()货super(形参列表)来调用父类的构造器。
public class MyText { int text; String one; MyText(int text,String one) { this.text=text; this.one=one; }}public class MyText1 extends MyText{ MyText1(int text,String one) { //此处使用super关键字调用父类的方法 super(text,one); } //定义一个方法,用于输出类的信息 public void show() { System.out.println(super.text+" "+super.one); } public static void main(String arg[]) { MyText1 my=new MyText1(1, "one"); my.show(); }}这时将输出1
六.多态是指编译是类型和运行的不同而产生的现象
多态存在的三个条件
1. 有继承
2. 有重写
3. 父类引用指向子类对象
public class Person { public String name="我是傻逼"; //父类被子类覆盖的方法 public void test() { System.out.println("父类被覆盖的方法"); } //父类自己的方法 public void father() { System.out.println("父类自己的方法"); }}public class MyText extends Person{public int name=6;//子类覆盖父类的方法public void test(){ System.out.println("子类覆盖父类的方法");} //子类的自己的方法public void son(){System.out.println("子类的普通方法");}public static void main(String[] args) { //java允许子类的实例,赋给父类的引用变量,父类的引用指向子类对象 Person p=new MyText(); //下面会输出的是父类的变量值,成员变量调用时,调用的是父类的变量 System.out.println(p.name); p.father(); //下面会调用的是子类的方法,而不是父类的方法,若有子类的方法覆盖了父类的方法,则优先调用父类的方法 p.test(); //引用p不能调用子类的方法,调用时,会出现编译出错。}}
输出的结果为:
我是傻逼
父类自己的方法
子类覆盖父类的方法
七. 判断实例
public class MyText extends Person{ //instanceof只能计算继承了某个接口和类的实例运算,没有继承,则不能执行运算。public static void main(String[] args) { Object hello="Hello"; //String继承了Object类,所以返回值为true System.out.println("字符串是否是Object的实例"+(hello instanceof Object)); System.out.println("字符串是否是String的实例"+(hello instanceof String)); //Math继承了Object类,所以可以进行instanceof的运算 System.out.println("字符串是否是Math的实例"+(hello instanceof Math)); //String实现了Comparable的接口,所以返回值为true System.out.println("字符串是否是Comparable的实例"+(hello instanceof Comparable));}}
- java的一些散知识点
- java的一些知识点
- java的一些小知识点
- java swing的一些知识点
- Java的一些基本知识点
- Java一些知识点的总结
- Klaus的一些Java知识点
- java集合的一些知识点
- 一些Java的知识点扫盲
- 一些琐碎的java知识点
- JAVA 的一些简单知识点
- 关于一些java的零碎的知识点
- JAVA的一些常用基础知识点
- 关于java一些知识点的总结
- JAVA的一些知识点(日记)
- java正则表达式的一些知识点
- 一些关于java的琐碎知识点
- 一些关于Java的琐碎基本知识点
- ym——Android快速开发框架(持续更新!)
- 用筛法求之N内的素数。
- 基数排序
- leetcode系列(41)Reverse Nodes in K-Group
- og4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析
- java的一些散知识点
- Tab导航栏的实现
- WGS-84、北京54、西安80空间坐标转平面坐标
- leetcode系列(42)Remove Duplicates from Sorted Array & Remove Element
- 加密原理
- poj 3273- Monthly Expense(最大值最小化)-二分
- struts中的ActionContext是什么?
- 如何在 PC 机上测试移动端的网页?
- 网络编程问题