Android面试-Java基础-基本语法
来源:互联网 发布:解忧杂货店淘宝 编辑:程序博客网 时间:2024/06/02 02:47
基本语法
基本数据类型
整型:
默认使用int类型,声明long类型需要加上l或L
byte short int long 唯一的区别就是存储空间的大小不同
浮点型:
默认使用的类型是double,后面加上F或f才被标示为float类型
基本数据类型转换
把不同的数据类型看出是不同容量的容器.
byte是1个字节,最多只能装1斤水.
short是2个字节,最多只能装2斤水.
自动类型转换:当把小数据范围类型的数值或变量赋给另一个大数据范围类型变量
,系统可以完成自动类型转型。这好比把装一斤水容器里的水倒进可以装两斤水的容器里一样。
byte,short,char -> int -> long -> float-> double
byte、short、char之间不会相互转换,他们在计算时首先会转换为int类型
强制类型转换:当把大范围类型的数值或变量赋给另一个小范围类型变量时,此时系统不能自动完成转换,需要加上强制转换符,但这样的操作可能造成数据精度的降低或溢出,所以使用时要格外注意。
这就好比把装两斤水容器里的水倒在可以装一斤水的容器里,是可能造成水溢出的。
byte c=5这是符合强转类型转换条件的,可为什么没转呢?
若直接把一个较小的整数常量(byte,short范围内)赋给一个byte或short变量,系统会自动把这个整数当做是byte或short类型,也就是存在隐式转换
Java中的基本数据类型变量为全局变量时,可以不赋值,直接使用,因为有默认值,但是作为局部变量时,就必须在赋值后才能使用,而对于引用数据类型,无论是全局还是局部变量,都会被赋予默认值null。另外,凡是用new关键字新建出来的对象或数组等,对象或数组里面的基本类型都被初始化了默认值,用static关键字声明的变量也被初始化为了默认值。
任何数据类型与String类型的变量或常量相”+”都会转换为String类型
引用数据类型
接口、类、数组、枚举
默认的初始值都为Null
赋值运算符
public class Hello{ public static void main(String[] args){ short s = 5; //s = s + 3;//编译出错,需要强转 s = (short)(s + 3); s += 3;//编译OK,隐式类型转换 }}加等于:x += 5; 相当于 x = x + 5,但还包括隐式类型转换。
switch
switch支持的类型是byte、short、char、int,本质是只支持int型(byte、short、char自动提升为int)。
除此之外switch还支持他们的包装类,在Java1.5之后支持枚举在Java1.7之后支持String类型。
嵌套循环
优化案例
循环嵌套案例
1.输出矩形图案
”* * * * *“
”* * * * *“
”* * * * *“
for(int i = 0; i < 3;i++){ for(int j = 0; j < 5; j++){ System.out.print("*"); } System.out.println(); }
2.输出三角形图案
“*”
“* *”
“* * *”
“* * * *”
“* * * * *”
for(int i = 1; i <= 5; i++){ for(int j = 1; j <= i; j++){ System.out.println("*"); } System.out.println();}
输出九九乘法表
for(int i = 1; i <= 9; i++){ for(int j = 1; j <= i; j++){ Syste.out.println(i + " * " + j + " = " + i * j + "/t"); } System.out.println();}
控制循环结构语句
break 结束当前所在的循环
continue 结束本次循环进入下一次循环
return 结束循环所在的方法
break、continue、return后面的语句永远没有机会执行,所以不能再跟任何语句,否则编译失败
控制外层循环
此时就得使用标签了,标签就是给某个循环起的别名,不过该别名得满足标识符的规范。
若要控制外层循环,就在break或continue后面跟上循环的别名就OK了
如: break <标签名>; continue <标签名>;
方法的重载与重写
重载 同一个类中,方法名相同,参数列表不同,根据传入的参数类型不同调用不同的方法
System.out.println();能打印各种类型的数据的原因就是因为重载
重写 父类与子类之间,子类定义了与父类方法名、参数相同的方法,子类调用这一方法时,默认调用子类自己的方法
方法的递归操作
斐波那契数列
f(0)=0 f(1)=1 f(n)=f(n-1)+f(n-2)
public int fn(int n){ if(n == 0){ return 0; }else if(n == 1){ return 1; }else{ return fn(n-1) + fn(n-2); }}
JVM内存模型
Java虚拟机栈:每一个方法,创建一个栈帧,,栈帧存放了当前方法的数据信息(局部变量),当方法调用完毕,该方法的栈帧就被销毁了.
Java堆:被所有线程共享的一块内存区域,在虚拟机启动时创建。所有的对象实例以及数组都要在堆上分配(使用new关键字,就表示在堆中开辟一块新的存储空间)。
方法区:线程共享的内存区域,存储已被虚拟机加载的类信息(.class)、常量、静态变量即时编译器编译后的代码数据等(这个区域的内存回收目标主要是针对常量池的回收和对类型的卸载)。
- Android面试-Java基础-基本语法
- Java基础 基本语法
- Java基础-基本语法
- java基础之基本语法
- JAVA基础总结-基本语法
- java基础--1.基本语法
- java基础--1.基本语法
- java基础--1.基本语法
- java基础--1.基本语法
- java基础--1.基本语法
- java基础--1.基本语法
- java基础--1.基本语法
- Java基础之基本语法
- Java基础学习-Java的基本语法
- Java基础笔记:Java的基本语法
- JAVA基础二基本语法介绍
- Java基础·概述·基本语法
- 黑马程序员 ---- java基础之基本语法
- P2746 [USACO5.3]校园网Network of Schools
- Linux中free命令详解
- java多线程之yield
- Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
- KOA2 提供HTTPS安全服务
- Android面试-Java基础-基本语法
- log4j.properties 配置
- eclipse导入myeclipse的web项目没法识别问题解决
- OpenCV人脸识别实验(二)——特征脸(fisherface)及其重构的源代码详解
- [leetcode]74. Search a 2D Matrix(Java)
- CentOS-CentOS原始/etc/pam.d/system-auth文件内容
- UIApplication详解
- iOS进阶道路 --SQLite使用
- 简单shell学习(1)