Java基础语法及面试拓展(一)--你好生活

    技术2022-07-11  80

    Java基础语法(一)

    注释:

    书写注释是一个非常好的习惯,注释并不会被执行

    单行注释 (样式编辑:File–>Settings–>Editor–>Color Scheme–>Language Defaults–>Comments–>Line comment) //单行注释用“//”开头,后面的内容就会被注释掉,不会执行 多行注释 (样式编辑:File–>Settings–>Editor–>Color Scheme–>Language Defaults–>Comments–>Block comment) //多行注释用/**/ /* 小荷才露尖尖角 早有蜻蜓立上头 */ 文档注释 (样式编辑:File–>Settings–>Editor–>Color Scheme–>Language Defaults–>Comments–>JavaDoc) //JavaDoc:文档注释,用/** 注释 */ /** *@Description 可以添加参数,可以被识别 *@Author wujie */
    Tips:打开IDEA创建项目 1. 创建空项目(Empty Project); 2. 配置项目结构(Project Structure),设置Project选项; 3. 新建模块(Module...),此步骤和配置项目结构不分先后顺序; 4. 在模块下的src文件夹中新建Java类文件 5. 编写程序

    标识符:

    Java所有组成的部分都需要名字。类名、变量名以及方法名都被称为标识符。

    关键字:系统已定义的程序单词,不能用来进行类、变量及方法的命名;

    标识符:类名、变量名以及方法名都被称为标识符。

    标识符注意点 1.所有的标识符都应该以字母(A-Z或者a-z),美元符($)或者下划线(_)开始; 2.首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或者数字的任何字符组合; 3.不能使用关键字作为类名、变量名或方法名; 4.标识符是大小写敏感的; 5.合法表示符举例:age、$salary、_value、__1_value; 6.非法标识符举例:123abc、-salary、#abc; 7.可以使用中文命名,但是一般不建议这样使用,也不建议使用拼音,不规范,显得很low。

    数据类型

    语言类型
    强类型语言: 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用,Java、C、C++属于强类型语言,安全性高。弱类型语言: VBScript、JavaScript
    Java数据类型

    基本类型(primitive type)

    数值类型 整数类型 byte(占一个字节):范围-128~127short(占两个字节):范围-32768~32767int(占4个字节):范围-2147483648~2147483647long(占8个字节):范围-9223372036854775808~9223372036854775807 浮点类型 float(占4个字节)double(占8个字节) 字符类型 char(占2个字节) 布尔(boolean)类型 占1个位,true或者false(0或1) public class HelloWorld { public static void main(String[] args) { //八大基本数据类型 //整数 int num1 = 100; //如何知道int数值范围,对应的类Integer,按住Ctrl+鼠标左键,即可通过类的源代码查看范围 byte num2 = 100; //对应的类为Byte short num3 = 100; //对应的类为Short long num4 = 100L; //Long类型要在数字后面加个L,对应的类为Long //小数:浮点数 float num5 = 50.1F; //float类型要在数字后面加个F double num6 = 3.1415926; //字符,只能输入一个字符,英文、符号或者汉字 char name = 'A'; //字符串,String不是关键字,属于类 String name1 = "中国"; //布尔值:true或false boolean flag = true; } }

    引用类型(reference type)

    类 String:字符串 接口数组

    拓展:什么是字节

    位(bit):是计算机内部数据存储的最小单位,11001100是一个八位的二进制数;字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来表示;1B = 8bit;字符:是指计算机中使用的字母、数字、字和符号。

    思考:电脑的32位和64位的区别是什么?

    32位的电脑只能使用32位的CPU和操作系统,64位电脑既可以使用32位的CPU和操作系统,也可以使用64位的。它们的寻址能力是不同的,32位电脑只能支持4GB的内存,64位电脑最高可支持128GB内存甚至更高。可支持的软件也是一样的,64位是兼容32位的。

    数据类型拓展

    public class HelloWorld { public static void main(String[] args) { //整数拓展 进制:二进制、八进制、十进制、十六进制 int i1 = 10; //十进制不需要加备注 int i2 = 010; //八进制数字前加0 int i3 = 0x10; //十六进制前加0x,分别用0~9和A~F代表1~16 int i4 = 0b10; //二进制前加0b System.out.println(i1); System.out.println(i2); System.out.println(i3); System.out.println(i4); //================================================================================================= /*浮点数拓展 浮点数特征:有限的、离散的、舍入误差、大约、接近但不等于; 银行业务怎么处理?避免使用浮点数进行比较,使用数学工具类BigDecimal; 最好完全避免使用浮点数进行比较。 */ float f = 0.1F; double d = 1.0 / 10; float e = 1.0F / 10; System.out.println(f == d); //输出false,原因是float和double精度不一样 System.out.println(f == e); //输出true float d1 = 2147483232F; float d2 = d1 + 1; System.out.println(d1 == d2); //输出true,原因是float类型定义值超出了该类型范围,程序自动舍弃了后面的多余部分 //================================================================================================= /*字符拓展 浮点数特征:有限的、离散的、舍入误差、大约、接近但不等于; 银行业务怎么处理?避免使用浮点数进行比较,使用数学工具类BigDecimal; 最好完全避免使用浮点数进行比较。 */ char c1 = 'a'; System.out.println(c1); System.out.println((int) c1); //强制转换,输出97,所有字符本质还是数字 //字符是Unicode编码表,每个字符占2个字节,目前编码可以表示65536个字符,甚至更多。 //U0000 UFFFF char c3 = '\u0061'; System.out.println(c3); //输出a,这种写法属于底层原理,根据输入的结果查询对应的字符 //转义字符 // \t 制表符,和Tab功能键相同 // \n 换行符,和回车键相同 System.out.println("Hello\tWorld"); //输出Hello World //对象,需要从内存分析 String s1 = new String("Hello"); String s2 = new String("Hello"); String s3 = "Hello"; String s4 = "Hello"; System.out.println(s1 == s2); //输出false System.out.println(s3 == s4); //输出true //new创建的对象的堆内存地址不同,尽管值相同,输出false;直接定义字符串,存在相同的常量池,只要值相同则输出true //================================================================================================= //布尔值拓展 boolean flag = true; //if (flag==true){} //if(flag){} // 两者效果相似,Less is more!代码要精简易读 } }

    类型转换

    由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换

    ----------------------------------->byte,short,char->int->long->float->double //long占8个字节,float占4个字节,但是浮点数优先级高于整数

    运算中,不同类型的数据先转化为同一类型,然后进行运算;

    public class Demo1 { public static void main(String[] args) { int i = 128; //int优先级比byte,故将int赋值给type,需要强制转换(类型转换) //优先级由高赋值给低,程序自动转换;相反,则需要强制转换 byte b = (byte) i; //输出-128,因为byte范围-128~127,赋给它的值超出范围了,导致内存溢出。 System.out.println(b); /* 注意点: 1.不能对布尔值进行转换 2.不能把对象类型转换为不相干的类型 3.在把高容量转换到低容量的时候,需要强制转换 4.强制转换的时候可能存在内存溢出,或者精度问题 */ System.out.println((int)23.7); //输出23 System.out.println((int)-45.89F); //输出-45 char c='a'; int d=c+1; System.out.println(d); //输出98,因为d是int类型 System.out.println((int)d); //输出98 System.out.println((char)d); //输出b,对d进行了强制转换 //计算比较大的数的时候,注意溢出的问题 //JDK7新特性,数字之间可以用下划线分割;JDK版本是向下兼容的 int money=10_0000_0000; int year=20; int total1=money*year; long total2=money*year; long total3=money*((long)year); System.out.println(total1); //输出-1474836480,原因内存溢出 System.out.println(total2); //输出-1474836480,在乘积转换为long类型前,乘积为int,已经内存溢出了 System.out.println(total3); //输出20000000000,先把一个数转换为long,计算结果类型也为long,故内存不会溢出 //程序规范性,整数和浮点数后面加字母时,要求使用大写 } }
    Processed: 0.010, SQL: 9