java基本数据类型
整数类型 short btye int
浮点类型float double
char 字符
布尔类型 boolean true flase
byte 8位有符号数 -2的7到2的7 -128-127 占一个字节
short 16位 2的正负15 -32768~32767 占两个字节
int 32位 2的正负31 占4个字节
long 64位 2的正负63 占8个字节
double 64位 占8个字节
float 32位 占4个字节
char 16位 0到2的16-1 占2个字节 采用unicode编码 前128字节与ASCLL兼容
boolean 1位 true 和false 1个字节
double>float>long>int>short>byte
从小转换到大 从大转换到小 或char和其他6中类型转换,须强转
js数据类型
number string boolean null undefind symbol
js声明对象:
内置函数:
var obj=new object();
obj.name=“m”;
obj.age=12;
obj.say=function(){
console.log(this.name+this.age);
}
console.log(obj);
obj.say;
自定义函数:
function Student(name,age){
this.name=name;
this.age=age;
this.say=function(){
console.log(this.name+this.age)
}
}
var obj = new Student(”m“,12);
console.log(obj);
obj.say();
js 声明变量:
//声明与赋值不分离
<script type="text/javascript">
var correctUsage = "m"
alert(correctUsage);
<script>
//声明与赋值分离
<script type="text/javascript">
var name;
name=”s“;
alert (name)
<script>
使用 let
let声明变量在{}中使用,变量的作用域限制在块级域中
window.onliad = function(){
var ul = document.getElementById(”“) //js获取dom
for(var i=0;i<=5;i++){
//创建一个对象
var li =doucument.createElement(“li”);
//li标签内内容设置为:Itemi
li.appendChild(document.createTextNode(”Item“)+i);
let j = i;
//绑定点击事件
li.οnclick= function(){
alert(“Item”+i+“is clicked”);
} ;
ul.appendClild(li);
}
}
js中变量的三种声明方式 var let const
定义方式:
var 变量名;
var message;or var message=12; or var message =‘hi’,age=18;
var 声明变量的作用域是函数作用域。即在函数内部声明变量,在调用这个函数䣌时候
创建该变量,调用结束后销毁变量。
function foo(){
console.log(age);
var age=26;
}
foo();//输出undefind
等价于
function foo(){
var age;
console.log(age);
var age=26;
}
foo();//输出undefind
let 关键字声明变量:
定义方式: let 变量名
let message;
let message=10;
let message =‘hi’,age=12;
let 声明变量的作用域:
let声明变量的作用域是块作用域。
const关键字声明变量:
定义方式:const 变量名;
注意:使用const声明变量时,
1.必须初始化变量的值。
const age=12;
2.不能修改该值。尝试修改会导致运行报错
const age = 16;
age=30 //TypeError:给常量赋值
3.不能重复使用
const age = 16;
const age =30;//SyntaxError
const声明变量的作用域:
块作用域
const name=‘s’;
if(true){
const name=‘n’;
}
conlose.log(name); //s
const声明应用对象
如果const 变量引用是一个对象,那么可以修改这个对象内部的属性。
const 与 for 循环:
- 不能用const声明迭代变量,因为迭代变量会自增。
for(const i=0;i<5;i++){
consloe.log(i);
}//typeerror 给常量赋值 - 待补充
let 与const的区别?
let与const都是只在声明所在的块级作用域有效
let声明的变量可以改变,值和类型都可以改变,没有限制。
const声明的变量不能改变值,所有const一旦声明了变量,就必须立即初始化,不能留到后面赋值。
const a = 2;
简述java多态?
Thread和Runnable的区别?
thread 和runnable 的实质是继承关系,没有可比性。
无论是使用Runnable 还是 thread , 都new Thread ,然后执行run 方法。
用法上,如果有复杂的线程操作需求,那就选择Thread ,如果只是
简单的执行一个任务,那就实现runnble。
实现runnable接口比继承thread类所具有的优势:
1.适合多个相同的程序代码的线程去处理同一个资源。
2.可以避免java中的单继承限制。
3.线程池只能放入实现 runnable或 callable类线程,不能放入继承thread 的类。
4.增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。
在启动多线程时,需要先通过Thread类的构造方法Thread(Runnable target)构造出对象,
然后调用Thread对象的start()方法来运行多线程代码/
start()方法的调用后并不是立即执行多线程代码,而是使得该线程变为可运动态,运行有操作系统决定。
实际上所有的多线程代码都是通过运行Thread的start()方法来运行的。
所有不管是扩展Thread类还是继承Runnable接口来实现多线程,都需要通过Thread 的对象
的API来控制线程。
short a=128,btye b =btye(a);问ab值?
key: a=128,b-128
byte取值访问 -128-127
Java中的集合类包括ArrayList、LinkedList、HashMap等,下列关于集合类描述正确的是()
A. ArrayList 和LinkedList 均实现了LIst接口
B. ArrayList 的访问速度比LinkedList快
C. 随机添加和删除元素时,ArrayList 的表现更佳
D. HashMap实现Map接口,它允许任何类型的键和值对象
解析:
ArrayList 和 LinkList 都实现了List 接口, HashMap实现了set接口。
ArrayList 在内存中基于数组实现,可以通过位置找到地址查找快,增加删除需要
修改其后面的所有元素所有慢, LinkList 在内存中基于链表存放,查找慢,修改快
HashMap 运行任何键值对,即使是null也是支持的
有一个Hashtable类,是不允许null作键和值的。