Java编程

java牛客网选择题错题整理

变量(与C++基本相同)1、类型(八个基础数据类型:两种浮点数、四种整数(不区分signed和unsigned)、两种字符及逻辑型)类型声明、初始化与赋值(变量出现在等式左边);变量使用(变量出现在等号右边)2、常量:用final修饰,例如final int SUM=100;3、数值常量类型尾缀:L或l(长整型long,如果整数不加l,则默认int)、F或l(浮点型float,如果带小数点的数值不加f,则默认为double)4、自动类型转换5、强制类型转换(<类型名>) <变量或表达式>强制类型转换,只是得到一个所要类型对应的值,而原来变量的类型和值并没有改变。

java牛客网选择题错题整理

不要在构造过程中使this逸出,即不要在构造函数中创建并启动线程,不要调用可改写的方法,或注册事件监听或对内部类实例化。   2.多使用线程封闭,即尽量把对象放在单线程中不参与共享.   3.使用栈封闭,即在方法内部用局部变量访问对象。   4.用ThreadLocal封装变量,为每个线程提供一个只属于该线程的变量副本。可以视ThreadLocal为Map,另外还有一个好处就是当线程终止后,该值也会被回收。(缺点:ThreadLocal变量类似全局变量,会降低代码的可重用性,并在类之间引入隐含的耦合性)。  5.多用不可变对象(对象正确创建未this逸出,且创建后其状态不能修改,且所有域都是final),其一定是线程安全的。 6.在静态初始化函数中初始化一个对象引用(JVM内部的同步机制保证了这种发布方式的安全性) 7.将对象的引用保存到volatile类型的域,AtomicReferance对象,某个正确构造对象的final域,或一个由锁保护的域中。  8.将对象放入线程安全的容器中可以由容器内部的同步机制保障对象安全发布。

假定操作A是线程T对变量V实施的use或assign动作,假定操作F是操作A相关联的load或store操作,假定操作P是与操作F相应的对变量V的read或write操作;类型地,假定动作B是线程T对变量W实施的use或assign动作,假定操作G是操作B相关联的load或store操作,假定操作Q是与操作G相应的对变量V的read或write操作。如果A先于B,那么P先于Q。这条规则要求valitile修改的变量不会被指令重排序优化,保证代码的执行顺序与程序的顺序相同。

代码中 int 型变量 score1 可以直接为 double 型变量 score2 完成赋值操作,运行结果为: 这种转换称为自动类型转换。

private static int ticket = 100; // 多个线程共用一个变量示例:卖票 TichetDemo.java如果定义静态,变量的生命周期较长,占用CPU 资源较多要实现Runnable接口解决:创建线程的第二种方式:实现 Runnable 接口步骤:

JAVA程序员培训定制课程c04 Java变量分类 ? 变量用于记录数值可变的数据 ? 按所属的数据类型划分: 基本数据类型变量 引用数据类型变量 ? 按被声明的位置划分: 局部变量:方法或语句块内部定义的变量 成员变量:方法外部、类的内部定义的变量 2 局部变量声明和初始化 ? Java变量使用前必须先声明和初始化(赋初值) ? 局部变量声明语法格式 DataType varName1[=value1][,varName2[=value2]…] ? 变量声明和初始化举例: public void amethod(){ int i; int j = i+5 ; // 编译出错,变量i还未被初始化 double d = 3.14; MyDate m; m = new MyDate(22,7,1964); System.out.println(m.getYear()); } 3 局部变量声明和初始化示例 public class TestLocal { public static void main(String [] args) { int x; if (args[0] != null) { x = 7; } int y = x; } } 4 成员变量声明和初始化 ? 成员变量在类的定义中声明 ? 在创建对象的同时创建有关的成员变量 ? 成员变量创建后系统自动对其进行 默认初始化 显式初始化 5 成员变量声明和初始化示例 public class Book { private String title; public String getTitle() { return title; } public static void main(String [] args) { Book b = new Book(); String s = b.getTitle(); // Compiles and runs String t = s.toLowerCase(); // Runtime Exception! 6 } 变量作用域 ? 局部变量的作用域就是它所在的方法或语句块 ? 在程序调用方法(进入语句块)时,局部变量才被创 建并可用,随方法(语句块)的退出,局部变量将被 销毁 ? 成员变量依附于对象(局部变量)存在,具有与对象 相同的生存期和作用域。 7 变量作用域举例 public class Test { private int i=1; public void method1() { int i=4, j=5; this.i = i + j; 栈内存 method2(7); } public void method2(int i) { int j=8; this.i = i + j; j8 method2 i 7 this System.out.println(this.i); } public static void main(String[] args) {method1 j i 5 4 Test t = new Test(); this t.method1(); main t } } Test对象 i 8 Ex1 1. 练习上页例程:Test.java,在各方法中添加输 出语句显示Test对象属性i(this.i) 的值,分析 程序执行流程并体会各变量的作用域。 //输出语句可采用:System.out.println(this.i); 9 运算符 ? 算术运算符: +,―,*,/,%,++,―― ? 关系运算符: >,<,>=,<=,==,!= ? 布尔逻辑运算符: !,&。

可见性:可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。

Similar Posts

发表评论

邮箱地址不会被公开。 必填项已用*标注