0
点赞
收藏
分享

微信扫一扫

【Java基本】实训第一天

妖妖妈 2022-05-03 阅读 153

2022.5.3

.class文件是给JVM运行的

bin的javac.exe来编译.Java文件成.class文件

Java.exe将.class文件运行(JVM中)

 

Jdk包含jre,jre包含jvm虚拟机

src和bin的区别:

开发好的源文件到.class(即编译后文件)在bin目录下面,src放源文件

修改文件编码,Preference搜索Workspace:UTF-8 gbk.......。。。

快捷键:

ctrl+d:删除光标所在行

Ctrl+alt+上或下:快速复制

Alt+shift+r:重命名

Alt+shift+a:开启、取消多行编辑

F11:快速运行

【面试题】Final修饰的常量是不能修改指向还是不能修改内容?

不能修改指向但是可以修改内容

 

 final修饰的变量其实就是相当于定义了一个变量,无法修改的变量

如果final修饰的是一个引用变量,那么该变量在栈内存存的是一个内存地址,改地址就不能改变,但是该内存地址所指向的那个对象还是可以变的。

成员变量默认是有初始值的

【面试题】char能否存汉字?可以的,但是有些没有录入到unicode表的特殊汉字是不行的

八大基本类型:byte[-128,127] short int long float double char boolean

数据类型转换:

  1. 隐式转换(自动):范围小的赋给范围大的

例如:byte xx =1;int yy = xx;xx = yy//程序报错,因为int范围更大,无法进行隐式转换,进行强制转换,xx = (byte)yy;

  1. 强制转换(手动):范围大的赋给范围小的,有可能会溢出(循环)

例如:byte xx =1;int yy = 128;xx = yy,输出:-128,溢出1,循环到-128,因为范围是【-128,127】

  1. 数据类型的自动提升

①字面整数默认的类型是int

②byte short char int 直接的运算结果类型都是Int

③操作数相互运算结构类型为范围较大的

例如:byte a=1;byte b = a+1;//程序报错,因为a+1都是直接默认为int,所以可以int b = a+1

Int e = 1;Long h = 1L;int i = e+h;//程序报错,因为③,类型long范围更大,所以int long = e+h

【面试题】float和long分别占用多少字节?请问float表示范围大还是Long?

原因:储存方式不一样,

Float类型:单精度。在内存中占用4个字节,共32位(bit)。它的取值范围按常理应该是 -2^32~2^32-1

long类型:长整型。在内存占用8个字节,共64位(bit)。它的取值范围为 -2^64~2^64-1

很明显应该是long整型比float整型的取值范围更大。但是浮点数的取值范围并不是这么表示的。

  V=(-1)^E * N * 2^M

数据转换问题:Byte data = 1;

Data = data+1;//报错,数据类型

Data+=1;//不报错,因为编译器做了优化会进行强转,注意数据溢出问题,变成了data = (byte)(data+1)

 

【面试题】int 和Integer有什么区别?

Java是面向对象的编程语言,为了编程方便引入了基本数据类型,但是为了能够这些数据类型当做对象操作,引入了对应的包装类型,Int的包装类就是Integer,从Java5开始引入了自动装箱/拆箱集中,使得两者互相转换

结果:Flase true

A==b?比较的是是否引用同一个对象,但是其实是创建了两个不同的对象

A==c?比较的是a自动拆箱成Int类型,与c的值比较是否相等 

【延伸】Double类parseDouble()和valueOf()方法的区别?

  1. 参数区别:Double.parseDouble()的参数只能是String,而Double.valueOf()参数类型可以是浮点型或者字符串
  2. 返回类型的区别:Double.parseDouble()把数字类型的字符串转换成double类型;Double.valueOf()把数字类型的字符串转换成Double类型

&按位与:都是1则1

例如:System.out.println(1&2);

0001(1)

0010(2)

0000(0)

|按位或:有1则1

例如:System.out.println(1|2);

0001(1)

0010(2)

0011(3)

^按位异或:相同为0不同为1

<<向左移

0010(2)向左移,左边消两零,往右边补

1000(8)

>>向右移

【面试题】&& & || |区别

&& ||都是逻辑操作

& |可以做位运算也可以做逻辑运算,特点:没有短路功能

 第一行短路了,执行到Flase不执行后面。第二行不会短路

【面试题】switch支持的数据类型有哪些?

 

 

  1. switch底层是使用int类型来判断的,int类型是四个字节的整数型类型,所以只要字节小于或等于4的整数型类型都是可以转化成int类型的,所以支持byte[1字节],short[2字节]都是可以理解的,long[8字节]超出了int的范围,因而不支持。

  1. 关于枚举和字符(串)也是转化为int类型间接实现的。枚举是再编译的过程中产生了一个新的数组,switch是通过转化成数组的形式来实现对枚举类型的支持。

【面试题】==和equals的区别

当 "=="运算符的两个操作数都是 包装器类型的引用,则是比较指向的是否是同一个对象,而如果其中有一个操作数是表达式(即包含算术运算)则比较的是数值(即会触发自动拆箱的过程)。

另外,对于包装器类型,equals方法并不会进行类型转换,比较内容

【面试题】如何退出双循环,当i=3 j=4时退出全部循环?

里面控制外层循环条件,break;

 boolean sign = true;
        for(int i=1;i<=5;i++){
            for(int j =1;j<=5;j++){
                System.out.println("i="+i+",j="+j);
                if(i==3 && j==4){
                    sign = false;
                    break;
                }
            }
            if(sign)break;
        }

控制跳出循环条件有:break➕ flag变量法

举报

相关推荐

Java第一天

JAVA第一天

自学Java第一天(基本信息)

java 月第一天

【第一天】

第一天

重学java第一天

0 条评论